Maison  >  Article  >  développement back-end  >  Explication détaillée du code de l'interface ArrayAccess en php

Explication détaillée du code de l'interface ArrayAccess en php

伊谢尔伦
伊谢尔伦original
2017-06-29 09:47:261506parcourir

L'injection de dépendance dans Slim est basée sur le bouton, alors je suis allée réapprendre le bouton. Par rapport à la classe d'injection de dépendances que j'ai écrite auparavant, Pimple a un usage très nouveau au lieu d'utiliser

$container->session_storage = function ($c) {
    return new $c['session_storage_class']($c['cookie_name']);
};

, il est injecté dans un tableau :

$container['session_storage'] = function ($c) {
    return new $c['session_storage_class']($c['cookie_name']);
};

Je l'ai seulement découvert. quand j'ai regardé le code source, il s'avère que l'astuce réside dans l'interface ArrayAccess fournie par php5.
Définition officielle : une interface qui offre la possibilité d'accéder à des objets comme l'accès à des tableaux.
Cette interface définit principalement quatre méthodes abstraites :

abstract public boolean offsetExists ( mixed $offset ) #检查数据是否存在
abstract public mixed offsetGet ( mixed $offset )      #获取数据
abstract public void offsetSet ( mixed $offset , mixed $value )     #设置数据   
abstract public void offsetUnset ( mixed $offset ) #删除数据

Si vous souhaitez que l'objet soit utilisé comme un tableau PHP, alors nous devons implémenter ArrayAccess Interface

Le code est le suivant :

interface ArrayAccess 
boolean offsetExists($index) 
mixed offsetGet($index) 
void offsetSet($index, $newvalue) 
void offsetUnset($index)


L'exemple suivant montre comment utiliser cette interface. L'exemple n'est pas complet, mais il. suffit pour comprendre : ->

Le code est le suivant :

<?php 
class UserToSocialSecurity implements ArrayAccess 
{ 
private $db;//一个包含着数据库访问方法的对象 
function offsetExists($name) 
{ 
return
 $this->db->userExists($name); 
} 
function offsetGet($name) 
{ 
return $this->db->getUserId($name); 
} 
function offsetSet($name, $id) 
{ 
$this->db->setUserId($name, $id); 
} 
function offsetUnset($name) 
{ 
$this->db->removeUser($name); 
} 
} 
$userMap = new UserToSocialSecurity(); 
print "John&#39;s ID number is " . $userMap[&#39;John&#39;]; 
?>


En fait, lorsque la recherche $userMap['John'] est exécutée , PHP appelle la méthode offsetGet() , puis appelle la méthode getUserId() liée à la base de données à partir de cette méthode.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn