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.