Witam. Od pewnego czasu mam problem jak rozwiązać sprawę wirtualnych klas contentu no i nie moge nadal wymyślić. Czy ktoś ma swoją zaimplementowaną metodę i chciałby się nią podzielić ?
Pozdrawiam
CREATE TABLE object_attribs ( oa_id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, object bigint(20) UNSIGNED NOT NULL DEFAULT '0', name varchar(64) NOT NULL DEFAULT '', value text NOT NULL, PRIMARY KEY (oa_id), KEY oa_id (oa_id,object,name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
'SELECT t.id, t.child_count, u.url, o.obj_id, o.obj_class_id, o.obj_class_name, o.obj_name, o.obj_date_created, o.obj_date_modified, a.attr_name, a.attr_short_name, a.attr_type, av.attr_value FROM content_tree t LEFT JOIN url_aliases u ON t.id = u.node LEFT JOIN content_objects o ON t.obj_id = o.obj_id LEFT JOIN content_class_attrs a ON a.attr_class_id = o.obj_class_id LEFT JOIN content_attr_values av ON av.attr_id = a.attr_id WHERE t.id = :id AND av.attr_obj_id = o.obj_id'
<VirtalClass> <name>Nazwa klasy</name> <object>nazwa obiektu</object> <methods> <param name="__construct" access="public">koood</param> </methods> </VirtalClass>
<?php class XmlParser { private $xml; public function __construct( $file ) { $this->xml = simplexml_load_file($file); } public function get( $var ) { return $this->xml->$var; } } ?>
przykładowy XML:
CREATE TABLE content ( id INT created INT modified INT xml TEXT );
<content> <param type="text" name="title">To jest tytul</param> <param type="textarea" name="desc">jakis opis</param> <param type="media-wmv" name="filmik" path="sciezka/plik.wmv" /> </content>
<query> <id>568</id> <keys> <key name="title" /> <key name="desc" /> </keys> </query>
a dostawałby ładny sformatowany XML. XPath itp przechodziłoby na stronę programu - modelu.
<search> <param author="aleksander" /> <param text="%php%" /> </search>
<content> <param type="text" name="title">To jest tytul</param> <param type="textarea" name="desc">jakis opis</param> <param type="media-wmv" name="filmik" path="sciezka/plik.wmv" /> </content>
<?php $xml = simplexml_load_string('tutaj string z bazy'); $result = $xml->xpath('/content/param[@name="title"]'); ?>