php get 및 set 메소드 사용: 1. [get()] 메소드는 비공개 멤버 속성의 값을 가져오는 데 사용됩니다. 매개변수는 가져올 멤버 속성의 이름으로 전달됩니다. 2. [set()] 메소드는 비공개 멤버 속성에 대한 값을 설정하는 데 사용되며 두 개의 매개변수를 갖습니다.
【관련 학습 권장사항: php 그래픽 튜토리얼】
php get 및 set 메소드:
일반적으로 말하자면, 항상 클래스의 속성을 비공개로 정의하는 것이 더 좋습니다. 현실적인 논리로 일관한다. 그러나 속성을 읽고 할당하는 작업은 매우 빈번하므로 PHP5에서는 속성을 가져오고 할당하기 위해 "__get()" 및 "__set()" 두 함수가 미리 정의되어 있습니다. Java의 javabean 연산과 비슷하며, 사용하는 방법도 비슷하지만 javabean처럼 각 필드에 대해 set, get 연산을 수행할 필요가 없습니다. 두 가지 매직 메서드를 추가하면 됩니다. 즉, 민간회원의 가치를 설정하고 획득하는 작업이다. PHP5는 속성 값을 설정하고 얻기 위한 특별한 메소드인 "__set()" 및 "__get()"을 제공합니다. 이 두 메소드는 기본적으로 존재하지 않지만 수동으로 클래스에 추가합니다. , 생성자 메서드(__construct())와 마찬가지로 이 두 메서드는 다음과 같은 방법으로 추가할 수 있습니다. 물론 개인 스타일에 따라 추가할 수도 있습니다. 코드는 다음과 같습니다.
//__set()方法用来设置私有属性 public function __set($name,$value){ $this->$name = $value; } //__get()方法用来获取私有属性 public function __get($name){ return $this->$name; }
get()
메서드: 이 메서드는 비공개 멤버 속성 값을 가져오는 데 사용됩니다. 매개 변수는 사용자가 지정한 멤버 속성의 이름으로 전달됩니다. 이 메소드를 수동으로 호출할 필요가 없습니다. 왜냐하면 이 메소드를 프라이빗 메소드로 만들 수도 있고 프라이빗 속성을 직접 얻을 때 객체가 자동으로 호출할 수도 있기 때문입니다. Private 속성이 캡슐화되어 있기 때문에 직접 값을 얻을 수는 없지만, 이 메소드를 클래스에 추가하면 "echo$p1->name"과 같은 문을 사용할 때 자동으로 값을 직접 얻을 수 있습니다. __get($name) 메소드를 호출하고 속성 이름을 $name 매개변수에 전달합니다. 이 메소드의 내부 실행을 통해 전달한 비공개 속성의 값이 반환됩니다. 멤버 속성이 비공개로 캡슐화되지 않은 경우 개체 자체는 이 메서드를 자동으로 호출하지 않습니다.
set()
메소드: 이 메소드는 비공개 멤버 속성에 대한 값을 설정하는 데 사용됩니다. 두 개의 매개변수가 있습니다. 첫 번째 매개변수는 값을 설정하려는 속성의 이름입니다. 두 번째 매개변수는 속성에 설정할 값입니다. 반환 값은 없습니다. 이 메서드는 수동으로 호출할 필요도 없습니다. 개인 속성 값을 직접 설정할 때 자동으로 호출됩니다. __set() 메서드가 없으면 허용되지 않습니다. 예를 들어 $this->name='zhangsan'이면 오류가 발생하지만 클래스에 __set($property_name, $value)
메서드를 추가하면 값을 private 속성에 추가하면 자동으로 호출되어 name 등의 속성을 $property_name에 전달하고 "zhangsan" 값을 $value에 전달하면 할당 목적이 달성됩니다. 멤버 속성이 비공개로 캡슐화되지 않은 경우 개체 자체는 이 메서드를 자동으로 호출하지 않습니다. 잘못된 값을 전달하지 않기 위해 이 방법으로 판단할 수도 있습니다. 코드는 다음과 같습니다.get()
方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了,是不能直接获取值的,但是如果你在类里面加上了这个方法,在使用“echo$p1->name”这样的语句直接获取值的时候就会自动调用__get($name)方法,将属性name传给参数$name,通过这个方法的内部执行,返回我们传入的私有属性的值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。
set()
方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。这个方法同样不用我们手工去调用,它也可以做成私有的,是在直接设置私有属性值的时候自动调用的,同样属性私有的已经被封装上
了,如果没有__set()这个方法,是不允许的,比如:$this->name=‘zhangsan',这样会出错,但是如果你在类里面加上了__set($property_name, $value)
<?php class Person { //下面是人的成员属性,都是封装的私有成员 private $name; //人的名子 private $sex; //人的性别 private $age; //人的年龄 //__get()方法用来获取私有属性 private function __get($property_name) { echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>"; if(isset($this->$property_name)) { return($this->$property_name); } else { return(NULL); } } //__set()方法用来设置私有属性 private function __set($property_name, $value) { echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>"; $this->$property_name = $value; } } $p1=newPerson(); //直接为私有属性赋值的操作,会自动调用__set()方法进行赋值 $p1->name="张三"; $p1->sex="男"; $p1->age=20; //直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值 echo "姓名:".$p1->name."<br>"; echo "性别:".$p1->sex."<br>"; echo "年龄:".$p1->age."<br>"; ?>프로그램 실행 결과:
private 속성값을 직접 설정할 경우 __set() 메소드가 자동으로 호출되어 private 속성값을 할당합니다직접 사용할 경우 프라이빗 속성 값을 설정하면 __set() 메서드가 자동으로 호출되어 프라이빗 속성에 값을 할당합니다 프라이빗 속성의 값을 직접 설정할 때 __set() 메서드가 자동으로 호출되어 프라이빗 속성에 값이 할당됩니다. 개인 속성 값을 직접 얻을 때 자동으로 이 __get() 메서드가 호출되었습니다이름: Zhang San개인 속성 값을 직접 얻을 때 이 __get() 메서드가 자동으로 호출되었습니다Gender : 남성프라이빗 속성 값을 직접 얻으면 자동으로 이 __get() 메소드가 호출됩니다Age: 20위 코드에서 __get(), __set() 메소드를 추가하지 않으면 프로그램에서 오류가 발생합니다. private 멤버는 클래스 외부에서 작동할 수 없으며 위 코드는 __get() 및 __set() 메서드를 자동으로 호출하여 캡슐화된 private 멤버에 직접 액세스할 수 있도록 도와줍니다.
관련 학습 권장 사항:php 프로그래밍(동영상)
위 내용은 PHP get 및 set 메소드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!