Recursos do PHP: algumas classes nativas da linguagem
Além das interfaces nativas, o PHP também conta com algumas classes nativas. O propósito delas é fornecer algumas funcionalidades que ajudam a agilizar o desenvolvimento.
A classe ArrayObject
A classe ArrayObject
é uma das classes nativas do PHP, o seu propósito é fornecer uma implementação genérica de um objeto que pode ser manipulado como um array, já que ela implementa a interface ArrayAccess
. Além disso, ArrayObjet
também implementa as seguintes interfaces:
IteratorAgreggate
;Countable
;Serializable
;
Uma das vantagens de utilizar essa classe é reaproveitar a implementação que ela fornece, para isso basta herdar dela. Com isso, não é necessário implementar cada interface citada, já que as implementações dela são reaproveitadas através da herança.
A seguir contém um exemplo de classe que reaproveita a implementação de ArrayObject através de herança.
<?php
/**
*
* @author Raphael da Silva
*
*/
class ListaDePessoas extends ArrayObject
{
}
A classe ListaDePessoas
está herdando a implementação de ArrayObjet
, com isso ela pode ser manipulada da mesma forma que a classe pai.
<?php
$nomes = new ListaDePessoas([
'Raphael',
'Bruno'
]);
// Trabalhando com o objeto como um array.
echo $nomes[0]; // Imprime Raphael.
echo $nomes[1]; // Imprime Bruno.
// O objeto pode ser contado por causa da interface Countable
echo count($nomes); // Imprime 2 (que é o total)
// Iterando o objeto
foreach($nomes as $nome){
echo $nome, PHP_EOL;
}
A classe StdClass
O php contém uma classe chamada StdClass
, ela é uma classe genérica que não possui métodos ou atributos, os dados passados para uma instância dessa classe são definidos no momento de sua atribuição, ou seja, são criados dinamicamente.
<?php
$usuario = new StdClass;
$usuario->nome = 'Usuário';
$usuario->idade = 22;
No trecho de código acima os atributos foram adicionados de forma dinâmica, já que nenhum deles existiam na classe. O uso de StdClass
pode se aplicar em casos onde é necessário agrupar alguns dados de forma rápida sem ter a necessidade de criar uma classe específica para isso.
Também é possível fazer o type casting para converter um array para uma instância de StdClass
, para isso basta utilizar a palavra object.
<?php
$usuario = [
'nome' => 'Usuário',
'ano' => 22
];
$objetoUsuario = (object) $usuario;
Esse tipo de conversão pode ser vantajosa em contextos onde é necessário passar um tipo que é um objeto como parâmetro reaproveitando os dados presentes em um array.
ver todos os posts