raelgc / template

PHP Template
http://raelcunha.com/template.php
GNU Lesser General Public License v2.1
73 stars 42 forks source link

Adequação aos PSRs 1, 2 e 4 #10

Open vaneves opened 9 years ago

vaneves commented 9 years ago

issue #9

raelgc commented 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.

vaneves commented 9 years ago

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));
}
raelgc commented 8 years ago

@vaneves, depois de um longo hiato... acho que a gente devia levar isso pra frente. Ainda está disposto? :)

nocttuam commented 8 years ago

@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.

raelgc commented 8 years ago

@nocttuam Sim, ainda preciso! Seria ótimo!