Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [simplexml] Polimorficzna edycja
Forum PHP.pl > Forum > PHP
cadavre
Plik (test.xml) XML:
  1. <content>
  2.      <book>
  3.            <name access="protected">Some Title</name>
  4.            <author>Some Author</author>
  5.      </book>
  6. </content>


Funkcja w php:
  1. <?php
  2. function setValue (SimpleXMLElement $e, $value) {
  3. if ($e->attributes()=='protected') {
  4. exit('Nie można edytowac!');
  5. }
  6. else {
  7. // argh!
  8. $e = $value;
  9. }
  10. }
  11. ?>


Obsługa:
  1. <?php
  2. $data = simplexml_load_file('test.xml');
  3. setValue($data->content->book->name,'Jakiś tytuł');
  4. ?>
Powyższa funkcja wywali exit'a.

Funkcja
  1. <?php
  2. $data = simplexml_load_file('test.xml');
  3. setValue($data->content->book->author,'Jakiś autor');
  4. ?>
Nie zrobi nic.

Dlaczego nie działa przypisanie $e = $value;?
em1X
hm, nie wiem jak u Ciebie ale u mnie ten kod nie działa.
Wywołanie:
  1. <?php
  2. $data = simplexml_load_file('test.xml');
  3. ?>


zwraca mi przy print_r taki obiekt
Kod
SimpleXMLElement Object
(
    [book] => SimpleXMLElement Object
        (
            [name] => Some Title
            [author] => Some Author
        )

)


nie mogę więc przekazać funkcji tego:
  1. <?php
  2. $data->content->book->name
  3. ?>


bo raz ze takie cos w klasie nie istnieje, dwa ze nawet jakby sie uparl to jest to string tiredsmiley.gif rolleyes.gif
cadavre
No nie wiem o co kaman. Dałem se z tym spokój i napisałem króciutką klasę extendującą SimpleXMLElement.
sagittariuspl
zamiast
Cytat
<?php
$data->content->book->name
?>


powinno być chyba
  1. <?php
  2. $data->book->name
  3. ?>


bez content
Cysiaczek
  1. <?php
  2. function setValue (SimpleXMLElement $e, $value) {
  3.  
  4. //ta metoda zwraca tablicę : )
  5. $attributes=$e->attributes();
  6. print_r($attributes);
  7.  
  8. if ($attributes['access']=='protected') {
  9. exit('Nie można edytowac!');
  10. }
  11. else {
  12. // argh!
  13. $e = $value;
  14. }
  15. }
  16. ?>


Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.