Métodos estáticos em PHP

Um dos principais recursos do PHP é sua capacidade de suportar métodos estáticos . Neste artigo, vamos nos aprofundar no que são os métodos estáticos do PHP e como eles funcionam no Oops .

Também examinaremos alguns exemplos que demonstrarão como eles podem ser implementados em diferentes situações.



Métodos estáticos do PHP – o que são?

Php static method é um método associado a uma classe em vez de uma instância da classe. Isso significa que você pode chamar um método estático diretamente na classe, sem precisar instanciar um objeto dessa classe.

A sintaxe para chamar um método estático é semelhante à de chamar um método regular, exceto que você usa o nome da classe em vez de uma variável de objeto.

Existem várias situações em que os métodos estáticos podem ser úteis, como quando um usuário precisa fazer algum tipo de ação em uma classe sem primeiro criar um objeto ou quando deseja criar métodos utilitários que não dependem de nenhum método específico. instância da classe.


Definir métodos estáticos em PHP

Para definir métodos estáticos, a palavra-chave static deve ser usada.

Em vez de serem métodos que pertencem a instâncias da classe, os métodos estáticos pertencem à própria classe real.

Devido a isso, eles podem ser chamados diretamente da própria classe, sem a necessidade de criar um objeto primeiro, o que economizará tempo.

Sintaxe

<?php
class ClassName
{
public static function staticMethod()
{
echo "mrexamples.com";
}
}
?>

Um método estático pode ser acessado usando o nome da classe, dois pontos duplos ( :: ) e o nome do método:

Sintaxe

ClassName::staticMethod();

Vejamos um exemplo para entender a sintaxe:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
class greeting
{
public static function morning()
{
echo "Good Morning";
}
}
// Call static method
greeting::morning();
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Exemplo explicado

O exemplo acima define uma classe chamada greeting que possui um único método estático chamado morning() . O método Morning() simplesmente repete a string “Bom dia”.

Para chamar o método morning(), o código usa o nome da classe greeting seguido pelo operador :: e o nome do método morning(), assim: greeting::morning() ;

Como Morning() é um método estático, ele pertence à própria classe de saudação e não a qualquer instância da classe. Isso significa que podemos chamar o método diretamente na classe, sem a necessidade de criar um objeto primeiro.

Quando o código for executado, ele exibirá a string “ Bom dia ”.


Vantagens dos métodos estáticos do PHP

Os métodos estáticos oferecem várias vantagens sobre os métodos regulares em PHP:

  • Os métodos estáticos do PHP podem ser chamados diretamente na classe, o que significa que você não precisa criar um objeto dessa classe para usar o método. Isso pode ser útil em situações em que você precisa chamar um método com frequência, mas não deseja incorrer na sobrecarga da instanciação do objeto.
  • Os métodos estáticos do PHP podem ser chamados usando a notação de dois pontos duplos (::), que é concisa e fácil de ler. Isso pode tornar seu código mais legível e fácil de manter.
  • Os métodos estáticos do PHP podem acessar variáveis ​​estáticas , que são compartilhadas por todas as instâncias da classe. Isso significa que você pode usar métodos estáticos para manipular o estado compartilhado, como um contador global ou um cache.
  • Os métodos Php Static podem ser usados ​​para a funcionalidade relacionada ao namespace dentro de uma classe. Isso pode ajudar a organizar seu código e torná-lo mais modular.
Nota : Existem métodos estáticos e métodos não estáticos que podem ser encontrados em uma classe.

Usando a palavra-chave self, bem como os dois pontos duplos (::):, você pode obter acesso a um método estático de outro método na mesma classe:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class Developer {
public static function skillSet(){
echo "I am a PHP developer";
}
public function __construct() {
echo self::skillSet();
}
}
new Developer();
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Existe também a possibilidade de chamar métodos estáticos de métodos de outras classes. Isso pode ser feito tornando o método estático público:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class Developer {
public static function skillSet(){
echo "I am a PHP developer";
}
}
class Developer2
{
public function message()
{
Developer::skillSet();
}
}
$dev2= new Developer2();
$dev2->message();
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Quando um método estático deve ser chamado de uma classe filha, a palavra-chave pai precisa ser usada na classe filha. Os métodos estáticos podem ser públicos ou protegidos .

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
class Developer {
public static function skillSet(){
echo "I am a PHP developer";
}
}
class Developer2 extends Developer
{
public function message()
{
Developer::skillSet();
}
public $developer1;
public function __construct()
{
$this->developer1 = parent::skillSet();
}
}
$dev2= new Developer2();
$dev2->$developer1();
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Exemplo de Explicação

Este exemplo define duas classes, Developer e Developer2 . O desenvolvedor tem um único método estático chamado skillSet() que ecoa a string “I am a PHP Developer”.

Developer2 estende Developer e tem um método público chamado message() que chama o método skillSet() da classe Developer usando a sintaxe Developer::skillSet() .

Developer2 também tem uma propriedade pública chamada developer1 que é inicializada no construtor para o resultado da chamada do método skillSet() na classe pai usando a sintaxe parent::skillSet() .

Finalmente, o código cria uma instância da classe Developer2 e acessa a propriedade developer1 usando a sintaxe $dev2->developer1 . O valor de developer1 é a string “I am a PHP Developer”, que foi atribuída no construtor usando o método parent::skillSet() .


Quando usar métodos estáticos do PHP

Os métodos estáticos são úteis em diversas situações, mas nem sempre são a melhor escolha.

Aqui estão alguns cenários em que você pode querer considerar o uso de métodos estáticos do Php:

  • Se você tiver um conjunto de funções que não dependem de nenhum estado de objeto, poderá defini-las como métodos estáticos em uma classe. Isso pode ajudar a organizar seu código e torná-lo mais modular.
  • Se você tiver uma classe que gera instâncias de outras classes, poderá definir um método estático dentro dessa classe para criar as instâncias. Isso pode tornar seu código mais legível e fácil de manter.
  • Se você tiver um conjunto de funções que fornecem funcionalidade auxiliar para uma classe, poderá defini-las como métodos estáticos nessa classe. Isso pode ajudar a manter a funcionalidade relacionada unida e torná-la mais fácil de entender.
Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone