Constantes de classe PHP

Resumo : neste tutorial, você aprenderá sobre constantes de classe PHP e como usá-las de forma eficaz.

Introdução às constantes de classe PHP

Às vezes, você precisa definir uma constante específica para uma classe . Neste caso, você pode usar as constantes da classe PHP.

Para definir uma constante de uma classe, você usa a constpalavra-chave. Por exemplo:

<?php

class Circle
{
    const PI = M_PI;
}Linguagem de código:  Python  ( python )

Neste exemplo, definimos a PIconstante na Circleclasse. Por convenção, um nome de constante está em letras maiúsculas. Se o nome da constante contiver diversas palavras, você poderá usar o sublinhado ( _) para separar as palavras, por exemplo MY_CONSTANT.

Como uma constante é definida por classe, não por instância da classe, você usa a selfpalavra-chave para referenciar a constante dentro da classe. Por exemplo:

<?php

class Circle
{
    const PI = M_PI;

    private $radius;

    public function __construct(float $radius)
    {
        $this->radius = $radius;
    }

    public function area(): float
    {
        return self::PI * $this->radius ** 2;
    }
}Linguagem de código:  Python  ( python )

Neste exemplo, definimos a Circleclasse com a $radiuspropriedade. Dentro do area()método, calculamos a área do círculo utilizando o raio e a self::PIconstante.

Quando você define uma constante em uma classe, sua visibilidade é pública por padrão. Isso significa que você também pode acessar a constante fora da classe.

Para fazer referência à constante fora da classe, você usa o nome da classe e o ::operador assim:

<?php

//  Circle class
//  ...

echo Circle::PI;Linguagem de código:  Python  ( python )

Observe que você pode fazer referência à classe usando uma variável cujo valor é o nome da classe. Por exemplo:

<?php

$className = 'Circle';

echo $className::PI;Linguagem de código:  Python  ( python )

Neste exemplo, em vez de usar Circle::PI, usamos the $className::PIpara fazer referência à constante PI.

Desde o PHP 7.1.0, você pode usar palavras-chave modificadoras de visibilidade como private, protectede publiccom a constante de classe. Por exemplo:

<?php

class Circle
{
    private const PI = M_PI;

    // other methods   
}Linguagem de código:  Python  ( python )

Neste exemplo, a PIconstante é privada e não pode ser usada fora da Circleclasse.

É possível definir uma constante de classe usando uma expressão constante. Uma expressão constante é uma expressão que contém apenas constantes. Por exemplo:

<?php

class MyClass 
{
    const ONE_THIRD = 1/3;
}Linguagem de código:  Python  ( python )

Constantes e herança de classe PHP

O exemplo a seguir ilustra como definir uma constante na classe pai e substituí-la na classe filha. Por exemplo:

<?php

abstract class Model
{
    protected const TABLE_NAME = '';

    public static function all()
    {
        return 'SELECT * FROM ' . static::TABLE_NAME;
    }
}

class User extends Model
{
    protected const TABLE_NAME = 'users';
}

class Role extends Model
{
    protected const TABLE_NAME = 'roles';
}

echo User::all(); // SELECT * FROM users;
echo Role::all(); // SELECT * FROM roles;Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, defina uma constante TABLE_NAMEna Modelclasse. No all()método estático, retorna uma consulta que seleciona todas as linhas do nome da tabela especificado pela TABLE_NAMEconstante.

Segundo, defina as classes Usere Roleque estendem a Modelclasse. Na classe User e Role, redefina a TABLE_NAMEconstante.

Como as classes Usere Roleherdam o all()método da Modelclasse, elas podem chamar o all()método.

Quando a Userclasse chama o all()método, o all()método retorna a TALBE_NAMEconstante esperada definida na Userclasse. A mesma lógica é aplicada à Roleclasse.

Resumo

  • Use a constpalavra-chave para definir uma constante de classe.
  • Use as palavras-chave modificadoras de visibilidade, incluindo público, protegido e privado. Por padrão, uma constante de classe é pública.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *