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

伊谢尔伦
Libérer: 2023-03-11 22:00:02
original
1505 Les gens l'ont consulté

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']);
};
Copier après la connexion

, il est injecté dans un tableau :

$container['session_storage'] = function ($c) {
    return new $c['session_storage_class']($c['cookie_name']);
};
Copier après la connexion

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 ) #删除数据
Copier après la connexion

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)
Copier après la connexion


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;]; 
?>
Copier après la connexion


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!