Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [simplexml] Polimorficzna edycja
cadavre
post 30.12.2006, 19:31:37
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


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post
em1X
post 31.12.2006, 17:35:27
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 tiredsmiley.gif rolleyes.gif

Ten post edytował em1X 31.12.2006, 17:37:03


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
cadavre
post 31.12.2006, 18:00:18
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.


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post
sagittariuspl
post 23.01.2007, 16:24:00
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


--------------------
Tylko sprawdzone typy bukmacherskie na BetGen.pl
Potrzebujesz konta bankowego? Nie? Każdy potrzebuje. Porównaj konta i wybierz najlepsze dla siebie
Zostań milionerem zaczynając od zbierania truskawek. Każdy może być bogaty - to nie mit.
Go to the top of the page
+Quote Post
Cysiaczek
post 23.01.2007, 17:12:38
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.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:21