Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

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

wants to merge 3 commits into from

Conversation

vaneves
Copy link
Contributor

@vaneves vaneves commented Sep 30, 2015

issue #9

@raelgc
Copy link
Owner

raelgc commented Sep 30, 2015

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
Copy link
Contributor Author

vaneves commented Sep 30, 2015

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
Copy link
Owner

raelgc commented Jul 18, 2016

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

@nocttuam
Copy link

@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
Copy link
Owner

raelgc commented Sep 21, 2016

@nocttuam Sim, ainda preciso! Seria ótimo!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants