Posso usar traços? Ou vou cortar uma grande parte da comunidade?

4

Se eu restringir a estrutura do meu tema para 5,4+ (min 5.4) php quanto da comunidade média eu estou cortando? Tudo só para que eu possa usar características para ajudar com alguns problemas de herança que eu corri para nesta pergunta eu perguntei .

Estou preocupado que, se eu adotar a abordagem de característica, perto de 70% ou mais da comunidade será cortada. Como a maioria dos sites de hospedagem gratuita ou "hospedagem compartilhada" não atualiza seu php em uma base "omg 5.5.x está fora permite upgrade".

    
por TheWebs 07.10.2013 / 21:23

2 respostas

3

Em contraste com Ben, acho que você pode usar traços se for necessário. Certifique-se de verificar a versão do PHP durante a instalação do plug-in. Não deixe seus usuários encontrarem alguns erros obscuros do PHP.

E não olhe para as estatísticas do wp.org por muito tempo. As estatísticas da versão incluem instalações abandonadas que não importam novos plugins. Apenas 15% são mantidos atualizados. Os sites antigos influenciam strongmente as estatísticas.

Mas.

As características raramente são a solução adequada para um problema de arquitetura. Se você precisar acessar os mesmos métodos em vários objetos, use a injeção de dependência e / ou uma fábrica.

Um exemplo muito simples: digamos que você precise acessar os dados de cabeçalho do seu plug-in em várias classes. Você poderia usar uma característica para isso. Mas você não deveria. É melhor separar isso e criar uma nova classe.

interface Plugin_Info_Interface
{
    public function set_file( $plugin_file );

    public function __get( $name );
}
class Plugin_Info implements Plugin_Info_Interface
{
    protected $plugin_file, $data = array();

    public function set_file( $plugin_file )
    {
        $this->plugin_file = $plugin_file;
    }

    public function __get( $name )
    {
        if ( isset ( $this->data[ $name ] ) )
            return $this->data[ $name ];

        $this->data = array_merge( 
            $this->data, 
            get_file_data( $this->plugin_file, array( $name ) ) 
        );

        if ( isset ( $this->data[ $name ] ) )
            return $this->data[ $name ];

        return '';
    }
}

E agora, em uma classe de informações extras na tabela da lista de plug-ins, basta usar uma instância dessa classe separada para obter os dados:

class Plugin_Table_Extra
{
    protected $plugin_info;

    public function set_header_data( Plugin_Info_Interface $plugin_info )
    {
        $this->plugin_info = $plugin_info;
    }

    public function show_git_repo()
    {
        $repo_url = $this->plugin_info->repo_url;

        if ( empty ( $repo_url ) )
            return;

        // create a link
    }
}

Mais fácil de ler, testar e manter compatível com versões anteriores.

    
por fuxia 08.10.2013 / 08:09
-2

Os requisitos oficiais para o WordPress pedem pelo PHP 5.2.4 ou superior. Quando eu crio um plugin ou tema, eu tenho certeza que ele funciona no 5.2.4.

Ao usar características e restringir seus usuários ao PHP 5.4+, você está eliminando cerca de 94% da base instalada do WordPress.

Quando você distribui seu tema ou plug-in, não existe nenhum mecanismo no WordPress.org para especificar uma versão mínima do PHP; Presume-se que seus requisitos mínimos sejam os mesmos do WordPress. Portanto, se o seu tema estiver no WordPress.org, os usuários do PHP 5.2 poderão instalar e ativar o seu tema, travar seus sites e, em seguida, procurá-lo para obter suporte. E nem todo mundo é capaz de simplesmente atualizar sua instalação do PHP.

    
por Ben Miller 07.10.2013 / 21:44

Tags