Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z funkcją children() (simplexml), Skrypt wyrzuca błąd "Can't use method return value.."
bubekson
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 13.01.2009

Ostrzeżenie: (0%)
-----


Cześć.

Jestem w trakcie pisania skryptu do odczytu i modyfikacji pliczku xml.
Całość oparłem o pętlę foreach- pierwszy skrypt odczytuje i wyświetla oddzielne formularze do modyfikacji każdej komórki.
Treść pierwszego:

  1. <?
  2. $xml = simplexml_load_file("test.xml");
  3.  
  4. foreach($xml->children() as $child)
  5. {
  6. echo "<form name=Edycja2 action=parser.php method=post><td><tr></tr><tr><td width=78><textarea rows=5 cols=30 name=" . $child->getName() . ">" . $child . "</textarea></td><td width=78><input type=submit value=Potwierdzam ></td></tr></form>";
  7. }
  8. ?>


^ I tutaj żadnego problemu nie ma, wszystko działa jak powinno.
Drugi skrypt otrzymuje zmienną i modyfikuje komórkę.

  1. <?php
  2. $xml = simplexml_load_file("test.xml");
  3.  
  4. foreach($xml->children() as $child){
  5. if (!empty($_POST[$child->getName()])){
  6. $child = $_POST[$child->getName()];
  7. $xml->children() = $child;
  8.  
  9.  
  10. foreach($xml->children() as $child) //Sprawdzam czy dokonał zmian.
  11. {
  12. echo $child->getName() . ": " . $child . "<br />";
  13. }
  14. }}
  15. ?>


^w tym skrypcie mam problem. Wszystko działa jak powinno jeśli chodzi o odbiór zmiennej ( bo gdy usunę "()" w linijce
"$xml->children() = $child;", to wtedy przesłany wynik pokazuje się w nowej komórce (o nazwie children)), ale gdy chcę przypisać $child do children() to skrypt wywala błąd :


Fatal error: Can't use method return value in write context in D:\blablablabla\parser.php on line 7


Co robię źle??




Czy ktokolwiek jest w stanie udzielić jakiejkolwiek odpowiedzi? Nie wiem, może to bug php albo coś. Może źle się do tego zabieram. Szukałem wszędzie ale nigdzie nie ma rozwiązania.

Go to the top of the page
+Quote Post
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


A zajrzał ty chociaż do manuala?? http://www.php.net/manual/en/simplexmlelement.children.php

ps.
Cytat
Nie wiem, może to bug php albo coś

Boga w to nie mieszaj...

Ten post edytował CuteOne 24.11.2010, 19:12:08
Go to the top of the page
+Quote Post
bubekson
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 13.01.2009

Ostrzeżenie: (0%)
-----


Nie rozumiem - czyli nie mogę odwołać się do children() w bezpośredni sposób?
Go to the top of the page
+Quote Post
Zyx
post
Post #4





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Ale czy rozumiesz w ogóle ten zapis?

  1. $xml->children() = $child;


Przecież nie da się nigdzie w PHP przypisać wartości wyrażenia do metody. Za przeproszeniem, to są absolutne podstawy PHP smile.gif. Nawet za bardzo sam nie rozumiem, co Ty tam próbujesz wymodzić, poza próbą modyfikowania wczytanego dokumentu. SimpleXML został zaprojektowany do prostego odczytu dokumentów XML, natomiast jego funkcjonalność nie była nigdy specjalnie dostosowywana pod kątem zapisu. Jeśli chcesz modyfikować wczytany dokument, użyj modelu DOM.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 08:55