strip_tags remove quitar para funcion etiquetas ent_quotes ejemplo php php-7

remove - Función que devuelve sugerencias de tipo para una matriz de objetos en PHP7



strip_tags wordpress (3)

Esto se llama Generics , desafortunadamente no veremos esta característica en el corto plazo . Puede escribir pistas de esta manera utilizando los docblocks .

El editor de PHP (IDE) como PhpStorm admite esto muy bien, y resolverá correctamente la clase al iterar sobre dicha matriz.

/** * @return YourClass[] */ public function getObjects()

PHPStorm también soporta matrices anidadas:

/** * @return YourClass[][] */ public function getObjects()

Estoy muy contento con las nuevas características en PHP 7. Pero estoy confundido sobre cómo devolver una matriz de objetos en PHP 7.

Por ejemplo, tenemos un Item clase y queremos devolver una matriz de objetos de esta clase desde nuestra función:

function getItems() : Item[] { }

Pero no funciona de esta manera.


La versión actual de PHP no admite un tipo de insinuación incorporada para una matriz de objetos , ya que no existe un tipo de datos como "una matriz de objetos". Un nombre de clase puede interpretarse como un tipo en ciertos contextos, así como una array , pero no ambos a la vez.

En realidad, puede implementar este tipo de insinuación de tipo estricta creando una clase basada en la interfaz ArrayAccess , por ejemplo:

class Item { protected $value; public function __construct($value) { $this->value = $value; } } class ItemsArray implements ArrayAccess { private $items = []; public function offsetSet($offset, $value) { if (! $value instanceof Item) throw new Exception(''value must be an instance of Item''); if (is_null($offset)) { $this->container[] = $value; } else { $this->container[$offset] = $value; } } public function offsetExists($offset) { return isset($this->container[$offset]); } public function offsetUnset($offset) { unset($this->container[$offset]); } public function offsetGet($offset) { return isset($this->container[$offset]) ? $this->container[$offset] : null; } } function getItems() : ItemsArray { $items = new ItemsArray(); $items[0] = new Item(0); $items[1] = new Item(2); return $items; } var_dump((array)getItems());

Salida

array(2) { ["ItemsArrayitems"]=> array(0) { } ["container"]=> array(2) { [0]=> object(Item)#2 (1) { ["value":protected]=> int(0) } [1]=> object(Item)#3 (1) { ["value":protected]=> int(2) } } }


Realmente entiendo lo que quieres decir, pero desafortunadamente la respuesta es que no puedes hacer eso. PHP7 carece de ese tipo de expresividad, por lo que puede declarar su función para devolver "array" (una matriz genérica) o tiene que crear una nueva clase ItemArray que es una matriz de Item (pero eso significa que tendrá que codificarlo usted mismo) ).

Actualmente no hay manera de expresar las instancias de "Quiero una matriz de elementos".

EDITAR: Como referencia adicional, aquí la "matriz de" RFC de lo que quería hacer, se ha rechazado debido a varias razones.