Resumo : neste tutorial, você aprenderá sobre o late static binding do PHP , que é um recurso interessante que foi adicionado ao PHP 5.3
Introdução à ligação estática tardia em PHP
Vamos começar com um exemplo simples.
<?php
class Model
{
protected static $tableName = 'Model';
public static function getTableName()
{
return self::$tableName;
}
}
class User extends Model
{
protected static $tableName = 'User';
}
echo User::getTableName(); // Model, not User
Linguagem de código: HTML, XML ( xml )
Como funciona.
- Primeiro, crie uma
Model
classe que possua$tableName
propriedade estática com o valor Model e umgetTableName()
método estático que retorne o valor do$tableName
. - Segundo, crie outra classe chamada
User
que estenda aModel
classe. AUser
classe também possui$tableName
atributo estático. - Terceiro, chame o
getTableName()
método daUser
classe. No entanto, ele retornaModel
em vez deUser
. A razão é queself
é resolvido para a classe à qual o método pertence. Se você definir um método em uma classe pai e chamá-lo de uma subclasse, eleself
não fará referência à subclasse como seria de esperar.
Para resolver esse problema, o PHP 5.3 introduziu um novo recurso chamado PHP static late binding.
Em vez de usar self
, você usa a static
palavra-chave que faz referência a uma classe exata que é chamada em tempo de execução.
Vamos modificar nosso exemplo acima:
<?php
class Model
{
protected static $tableName = 'Model';
public static function getTableName()
{
return static::$tableName;
}
}
class User extends Model
{
protected static $tableName = 'User';
}
echo User::getTableName(); // User
Linguagem de código: HTML, XML ( xml )
Agora você obtém o resultado esperado.
Anterior