>  기사  >  백엔드 개발  >  PHP의 ArrayAccess 인터페이스에 대한 자세한 코드 설명

PHP의 ArrayAccess 인터페이스에 대한 자세한 코드 설명

伊谢尔伦
伊谢尔伦원래의
2017-06-29 09:47:261561검색

슬림의 의존성 주사는 여드름을 기본으로 해서 여드름을 다시 배우러 갔습니다. 이전에 작성한 종속성 주입 클래스와 비교하면 pimple은

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

를 사용하는 대신 배열에 주입됩니다.

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

소스 코드를 살펴보면 트릭이 있다는 것을 발견했습니다. php5에서 제공하는 ArrayAccess 인터페이스.
공식 정의: 배열 액세스와 같이 객체에 액세스하는 기능을 제공하는 인터페이스입니다.
이 인터페이스는 주로 네 가지 추상 메소드를 정의합니다:

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 ) #删除数据

object를 PHP array처럼 사용하려면 ArrayAccess interface

를 구현해야 합니다. 코드는 다음과 같습니다.

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


다음 예는 이 인터페이스를 사용하는 방법을 보여줍니다. 예는 완전하지는 않지만 이해하기에는 충분합니다. :->

코드는 다음과 같습니다.

<?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;]; 
?>


실제로 $userMap['John' ] 검색이 실행되면 PHP는 offsetGet() 메소드를 호출하고, 이로부터 데이터베이스 관련 getUserId() 메소드가 호출됩니다.

위 내용은 PHP의 ArrayAccess 인터페이스에 대한 자세한 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.