슬림의 의존성 주사는 여드름을 기본으로 해서 여드름을 다시 배우러 갔습니다. 이전에 작성한 종속성 주입 클래스와 비교하면 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's ID number is " . $userMap['John']; ?>
실제로 $userMap['John' ] 검색이 실행되면 PHP는 offsetGet() 메소드를 호출하고, 이로부터 데이터베이스 관련 getUserId() 메소드가 호출됩니다.
위 내용은 PHP의 ArrayAccess 인터페이스에 대한 자세한 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!