Open vaneves opened 9 years ago
Puxa, isso foi rápido, @vaneves!
Somente uma dúvida... estou lendo o PSR4, e não ficou claro pra mim porque deveríamos usar o /src
no path.
Ele apenas continua dizendo que The fully qualified class name MUST have a top-level namespace name, also known as a "vendor namespace"
, o que via contra o usar o src
como primeiro diretório.
Você pode me explicar pq o src
é obrigatório? Acho que não entendi.
O "top-level" é raiz do namespace, mas não necessariamente o raiz do projeto. Por exemplo a estrutura:
src/
Vaneves/
View/
Template.php
doc/
get-started.md
installation.md
tests/
...
Template poderia ter o namespace Vaneves\View
e dentro do Composer eu defino a raiz dele:
"autoload": {
"psr-4": { "Vaneves\\": "src/Vaneves" }
}
Ou seja, estou definido a raíz em src/Vaneves
, daqui para frente os diretórios devem respeitar o namespace.
A verdade a utilização do src/
não é obrigação do PSR-4, é apenas um padrão que muitos componentes utilizam. É algo como ocorre no front-end, que usam o dist/
para o compilado do SASS/LESS, por exemplo.
No caso do raelgc/template
realmente não precisaria, foi até vacilo meu. Então recuse o pull-request e vamos definir melhor (a formatação eu uso o phpfmt, do Sublime Text).
Outra coisa, o função replace()
dentro do mesmo arquivo. Porque o ideal seria o namespace
namespace raelgc\view;
e não
namespace raelgc\view {
}
Uma saída seria utilizar funções anonimas. Como o requisito mínimo da classe Template é o PHP 5.3, ele já suportaria. Por exemplo, criar o método:
<?php
protected $functions = array();
public function addFunction('name', $callback)
{
$this->functions['name'] = $callback;
}
Depois, dentro do método Template->substModifiers()
, verificar se foi registrada. Se não for registrada, verificar se existe como função normal.
<?php
if(isset($this->functins[$function])) {
call_user_func_array($this->functins[$function], array_merge(array($value), $parameters));
}
@vaneves, depois de um longo hiato... acho que a gente devia levar isso pra frente. Ainda está disposto? :)
@raelgc ainda precisa que estas adequações sejam feitas? Me proponho a fazer as adequações usando as PSRs e preparar para uso através do packagist.
@nocttuam Sim, ainda preciso! Seria ótimo!
issue #9