juanmf / SourceEditor

Library to tokenize, edit and override PHP classes
3 stars 3 forks source link

Posible arreglo en ConstantElement y ClassElements #3

Open joanfont opened 10 years ago

joanfont commented 10 years ago

Parece que si el parentClass es null no es capaz de parsear el fichero, se ha añadido esta comprobación previa.

docdigital/php-class-editor/DocDigital/Lib/SourceEditor/ClassStructure/ConstantElement.php

125c125
<         $this->parentClass->addElement($element);

---
>         if($this->parentClass) $this->parentClass->addElement($element);

Por otra parte esta ignorando la palabra reservada namespace cuando añade un namespace. Se ha modificado la sentencia setNameSpace.

docdigital/php-class-editor/DocDigital/Lib/SourceEditor/ClassStructure/ClassElement.php

91c91
<         $this->namespace = sprintf('namespace %s;',$nameSpaceLine);

---
>         $this->namespace = $nameSpaceLine;
juanmf commented 10 years ago

Gracias @joanfont, Lo voy a verificar pronto. Si queres, podes hacer un pull request. Ten en mente lo siguiente, si bien es mas elegante

$class->setNameSpace('Some\\Name\\Space');

Tambien podrian usarlo de la siguiente manera (yo no estoy cambiando el namespace pero en el caso de los $class->addUse() mando el 'use ' en la linea).

$class->setNameSpace('namespace Some\\Name\\Space;');

O definimos bien en el DocBlock, el formato esperado del parametro $nameSpaceLine (Line induce a pensar en toda la linea) o controlamos en el metodo que tenga ';' y 'namespace '

Con respecto a ConstantElement, creo que lo mejor es hacer obligatorio el paremetro $parentClass en el __construct(). Dado que ya se advierte en el DocBlock que al ser null, el ConstantElement#addElement() va a fallar.