백엔드 개발 PHP 튜토리얼 PHP - ArrayAccess 인터페이스에 대한 자세한 설명

PHP - ArrayAccess 인터페이스에 대한 자세한 설명

Jul 29, 2016 am 08:55 AM
offset public

PHP ArrayAccess 인터페이스는 배열 액세스 인터페이스라고도 합니다. 이 인터페이스의 기능은 배열 액세스와 같은 개체 액세스 기능을 제공하는 것입니다.

인터페이스 요약은 다음과 같습니다.

ArrayAccess {
    // 获取一个偏移位置的值
    abstract public mixed offsetGet ( mixed $offset )
    // 设置一个偏移位置的值
    abstract public void offsetSet ( mixed $offset , mixed $value )
    // 检查一个偏移位置是否存在
    abstract public boolean offsetExists ( mixed $offset )
    // 复位一个偏移位置的值
    abstract public void offsetUnset ( mixed $offset )
}
로그인 후 복사

설명 예:

<?php
/**
* ArrayAndObjectAccess
* 该类允许以数组或对象的方式进行访问
*
* @author 疯狂老司机
*/
class ArrayAndObjectAccess implements ArrayAccess {

    /**
     * 定义一个数组用于保存数据
     *
     * @access private
     * @var array
     */
    private $data = [];

    /**
     * 以对象方式访问数组中的数据
     *
     * @access public
     * @param string 数组元素键名
     */
    public function __get($key) {
        return $this->data[$key];
    }

    /**
     * 以对象方式添加一个数组元素
     *
     * @access public 
     * @param string 数组元素键名
     * @param mixed  数组元素值
     * @return mixed
     */
    public function __set($key,$value) {
        $this->data[$key] = $value;
    }

    /**
     * 以对象方式判断数组元素是否设置
     *
     * @access public
     * @param 数组元素键名
     * @return boolean
     */
    public function __isset($key) {
        return isset($this->data[$key]);
    }

    /**
     * 以对象方式删除一个数组元素
     *
     * @access public
     * @param 数组元素键名
     */
    public function __unset($key) {
        unset($this->data[$key]);
    }

    /**
     * 以数组方式向data数组添加一个元素
     *
     * @access public
     * @abstracting ArrayAccess
     * @param string 偏移位置
     * @param mixed  元素值
     */
    public function offsetSet($offset,$value) {
        if (is_null($offset)) {
            $this->data[] = $value;
        } else {
            $this->data[$offset] = $value;
        }
    }

    /**
     * 以数组方式获取data数组指定位置元素
     *
     * @access public   
     * @abstracting ArrayAccess       
     * @param 偏移位置
     * @return mixed
     */
    public function offsetGet($offset) {
        return $this->offsetExists($offset) ? $this->data[$offset] : null;
    }

    /**
     * 以数组方式判断偏移位置元素是否设置
     *
     * @access public
     * @abstracting ArrayAccess
     * @param 偏移位置
     * @return boolean
     */
    public function offsetExists($offset) {
        return isset($this->data[$offset]);
    }

    /**
     * 以数组方式删除data数组指定位置元素
     *
     * @access public
     * @abstracting ArrayAccess     
     * @param 偏移位置
     */
    public function offsetUnset($offset) {
        if ($this->offsetExists($offset)) {
            unset($this->data[$offset]);
        }
    }

}

$animal = new ArrayAndObjectAccess();

$animal->dog = 'dog'; // 调用ArrayAndObjectAccess::__set
$animal['pig'] = 'pig'; // 调用ArrayAndObjectAccess::offsetSet
var_dump(isset($animal->dog)); // 调用ArrayAndObjectAccess::__isset
var_dump(isset($animal['pig'])); // 调用ArrayAndObjectAccess::offsetExists
var_dump($animal->pig); // 调用ArrayAndObjectAccess::__get
var_dump($animal['dog']); // 调用ArrayAndObjectAccess::offsetGet
unset($animal['dog']); // 调用ArrayAndObjectAccess::offsetUnset
unset($animal->pig); // 调用ArrayAndObjectAccess::__unset
var_dump($animal['pig']); // 调用ArrayAndObjectAccess::offsetGet
var_dump($animal->dog); // 调用ArrayAndObjectAccess::__get

?>
로그인 후 복사

위 출력:

부울 true
부울 true
문자열 'pig'(길이=3)
문자열 'dog'(길이=3)
null
null

위 내용은 관련 측면을 포함하여 PHP - ArrayAccess 인터페이스에 대한 자세한 설명을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

iOS 개발자 버전과 공개 버전의 차이점은 무엇인가요? iOS 개발자 버전과 공개 버전의 차이점은 무엇인가요? Mar 01, 2024 pm 12:55 PM

매년 Apple이 iOS 및 macOS의 새로운 주요 버전을 출시하기 전에 사용자는 몇 달 전에 베타 버전을 다운로드하여 먼저 경험할 수 있습니다. 소프트웨어는 대중과 개발자 모두가 사용하기 때문에 Apple은 개발자 베타 버전의 공개 베타 버전인 개발자 버전과 공개 버전을 모두 출시했습니다. iOS 개발자 버전과 공개 버전의 차이점은 무엇인가요? 말 그대로 개발자 버전은 개발자 베타 버전이고, 퍼블릭 버전은 퍼블릭 베타 버전이다. 개발자 버전과 공개 버전은 서로 다른 대상을 대상으로 합니다. 개발자 버전은 개발자가 테스트하기 위해 Apple에서 사용합니다. 다운로드하고 업그레이드하려면 Apple 개발자 계정이 필요합니다.

PHP 공지: 정의되지 않은 오프셋 솔루션 PHP 공지: 정의되지 않은 오프셋 솔루션 Jun 25, 2023 am 09:51 AM

PHPNotice:Undefineoffset은 일반적인 PHP 프로그램 오류입니다. 이는 프로그램이 배열에 존재하지 않는 첨자를 사용하려고 시도하여 프로그램이 정상적으로 실행되지 않음을 의미합니다. 이 오류는 일반적으로 PHP 인터프리터가 다음 경고 메시지를 표시할 때 발생합니다. 주의 사항: 정의되지 않은 오프셋. PHPNotice:Undefineoffset 오류를 해결하는 몇 가지 방법은 다음과 같습니다. 먼저 코드를 확인하세요.

Java 프로그램은 다양한 액세스 수준을 표시합니다. Java 프로그램은 다양한 액세스 수준을 표시합니다. Aug 19, 2023 pm 10:09 PM

액세스 수정자는 특정 클래스, 인터페이스, 변수, 메소드, 생성자, 데이터 멤버 및 Java 프로그래밍 언어의 setter 메소드의 가시성 기능을 설정하는 데 사용됩니다. Java 환경에는 다양한 유형의 액세스 수정자가 있습니다. 기본값 - 함수를 선언하면 특정 패키지에만 표시됩니다. 비공개 - 함수를 선언하면 특정 클래스에서만 사용할 수 있습니다.

Java에서 public 수정자를 사용하는 방법 Java에서 public 수정자를 사용하는 방법 Apr 18, 2023 pm 06:04 PM

1. 다른 모든 클래스는 공개로 선언된 클래스, 메서드, 생성자 및 인터페이스에 액세스할 수 있습니다. 2. 서로 접근하는 퍼블릭 클래스가 서로 다른 패키지로 배포되어 있는 경우, 해당 퍼블릭 클래스가 위치한 패키지를 import 해야 합니다. 클래스 상속으로 인해 모든 공용 메서드와 변수는 해당 하위 클래스에서 상속될 수 있습니다. 예 publicclassdemo1{publicstaticvoidmain(String[]args){Personp1=newPerson();p1.fn();System.out.println(p1.a);//100System.out.println(p1.scorce);/

Java 함수 접근 한정자 공개 사용 가이드 Java 함수 접근 한정자 공개 사용 가이드 Apr 26, 2024 am 08:39 AM

Java 공용 액세스 수정자를 사용하면 어디에서나 함수에 액세스할 수 있으며 공용 API를 선언하고 패키지 또는 클래스 간에 공유되는 도구 및 유틸리티를 정의하는 데 사용됩니다. 구체적인 사용법은 다음과 같습니다. 구문: 공용 반환 값 유형 함수 이름(매개변수 목록) {...} 시나리오: 어디서나 액세스해야 하는 함수, 공용 API의 메서드, 공유 도구 또는 유틸리티

다양한 MySQL 페이징 구현 다양한 MySQL 페이징 구현 Feb 19, 2024 pm 03:26 PM

MySQL의 페이징 방법은 무엇입니까? 특정 코드 예제가 필요합니다. MySQL은 쿼리 효율성을 높이고 데이터 전송량을 줄이기 위해 매우 일반적인 요구 사항입니다. MySQL은 다양한 페이징 방법을 제공합니다. 이러한 방법은 아래에서 자세히 소개되고 구체적인 코드 예제가 제공됩니다. LIMIT 절을 사용한 페이징: LIMIT 절은 쿼리 결과에 반환되는 행 수를 제한하는 데 사용됩니다. 여기에는 두 개의 매개변수가 있습니다. 첫 번째 매개변수는 반환된 결과의 시작 오프셋 위치(0부터 계산)를 지정하고 두 번째 매개변수는

PHP 공지 사항에 대한 솔루션: 정의되지 않은 오프셋: PHP 공지 사항에 대한 솔루션: 정의되지 않은 오프셋: Jun 23, 2023 pm 01:26 PM

PHP는 웹 개발 분야에서 널리 사용되는 고성능 오픈 소스 크로스 플랫폼 스크립팅 언어입니다. PHP 언어의 사용 용이성과 유연성은 개발자에게 많은 편의성을 제공하지만 몇 가지 문제도 발생합니다. 그 중 가장 흔한 오류 중 하나는 "PHPNotice:Undefineoffset:XXX"입니다. 이 오류는 일반적으로 PHP 프로그램에서 배열에 액세스할 때 존재하지 않는 키 이름이나 아래 첨자를 사용하여 발생합니다. 존재하지 않는 배열 요소에 액세스하려고 하면 PHP는

PHP 공지: 정의되지 않은 오프셋: 4 솔루션 PHP 공지: 정의되지 않은 오프셋: 4 솔루션 Jun 22, 2023 pm 04:51 PM

PHPNotice:Undefineoffset:4에 대한 해결 방법 PHP에서 코드를 작성하는 과정에서 "PHPNotice:Undefineoffset:4"와 유사한 오류 메시지가 나타날 수 있습니다. 이 오류 메시지는 배열에 액세스할 때 존재하지 않는 요소에 액세스하려고 한다는 의미입니다. 특히, $my_array 배열에 요소가 3개만 있고 $my_array에 액세스하려고 하면

See all articles