Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [simplexml] Polimorficzna edycja
cadavre
post
Post #1





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


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;?

Ten post edytował cadavre 30.12.2006, 19:32:10
Go to the top of the page
+Quote Post
em1X
post
Post #2





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


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 (IMG:http://forum.php.pl/style_emoticons/default/tiredsmiley.gif) (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)

Ten post edytował em1X 31.12.2006, 17:37:03
Go to the top of the page
+Quote Post
cadavre
post
Post #3





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


No nie wiem o co kaman. Dałem se z tym spokój i napisałem króciutką klasę extendującą SimpleXMLElement.
Go to the top of the page
+Quote Post
sagittariuspl
post
Post #4





Grupa: Zarejestrowani
Postów: 374
Pomógł: 3
Dołączył: 30.12.2006
Skąd: co skąd?

Ostrzeżenie: (10%)
X----


zamiast
Cytat
<?php
$data->content->book->name
?>


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


bez content
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #5





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




  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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 4.10.2025 - 12:22