Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos,
Estou querendo criar uma biblioteca que gere de forma simples e sem complicações vários elementos HTML, como formulários, tabelas, etc.. Aí pensei que seria mais fácil aproveitar as classes do Document Object Model (ou DOM, nativas no PHP 5), e extender as minhas classes a partir delas... já que um documento XHTML não deixa de ser um XML.
Como a documentação do DOM no site do PHP é meio ruim (tem pouca informação e quase nenhum exemplo), eu baixei o código fonte do PHP pra estudar essa biblioteca (mesmo sendo uma topeira em linguagem C). Até descobri algumas coisas, mas ainda estou apanhado em alguns pontos. Por exemplo, se você faz:
<?php
class FormElement extends DOMElement {
function __construct() {
parent::__construct("form");
}
}
$Form = new FormElement();
$Form->setAttribute("method", "post");?>
Gera uma Exception dizendo "NO MODIFICATION ALLOWED ERROR". Mas se você fizer isto, funciona:
<?php
class FormElement extends DOMElement {
function __construct() {
parent::__construct("form");
}
}
$Doc = new DOMDocument();
$Form = new FormElement();
// adiciona o elemento <form> ao documento
$Doc->appendChild($Form);
$Form->setAttribute("method", "post");
// conferindo
echo htmlentities($Doc->saveHTML());
?>
O que eu quero saber é: seria possível trabalhar com esses elementos individualmente, ou eu sempre vou precisar ter um objeto do tipo "DOMDocument" para poder utilizá-los?
Acredito que a resposta seja que sempre vou precisar ter um DOMDocument... até porque vou precisar do método saveHTML(), que só tem nele. Mas o engraçado é que se eu remover o elemento $Form do $Doc, eu consigo alterá-lo à vontade. Então por que eu não consigo antes? :-/
Obrigado a todos que puderem me ajudar! :thumbsup:
você queria tipo trabalhar com as tags individuais tipo quando precisar criar um formulario etc... é isso ?
Isso, exatamente... queria poder criá-las e definir seus atributos, tags filhas, etc. sem ter que adicioná-las a um objeto do tipo DOMDocument antes.
PS: adicionei a definição da classe FormElement ao exemplo de baixo, também... ;)
nao entendi direito o que você quer fazer e no seu exemplo o FormElement nao existe pra tirar a duvida procurei ate no manual do php e nao existe mesmo dai rodando seu exemplo da esse erro:
Fatal error: Class 'FormElement' not found in C:\root\classe.php on line 11
você queria tipo trabalhar com as tags individuais tipo quando precisar criar um formulario etc... é isso ?
ata viajei eu nao percebi que você tava usando a classe que você tinha criado no exemplo acima testei apenas o exemplo debaixo