이 글은 주로 yii2의 getter 및 setter와 관련하여 주의해야 할 사항을 공유합니다. yii2의 getter 및 setter 사용 방법을 더 잘 이해하는 데 도움이 되기를 바랍니다.
먼저 yiichina의 권위 있는 가이드에 대한 설명을 살펴보겠습니다.
이러한 속성의 이름은 대소문자를 구분하지 않습니다. 예를 들어 $object->label과 $object->Label은 동일한 속성입니다. PHP 메소드 이름은 대소문자를 구분하지 않기 때문입니다.
이 유형의 속성 이름이 클래스 멤버 변수와 동일한 경우 후자가 우선합니다. 예를 들어, 위의 Foo 클래스에 레이블 멤버 변수가 있다고 가정해 보겠습니다. 그런 다음 $object->label = 'abc'에 값을 할당합니다. 이 값은 setter setLabel() 메서드 대신 멤버 변수에 할당됩니다.
이 유형의 속성은 가시성(액세스 제한)을 지원하지 않습니다. 속성의 getter 및 setter 메서드가 공개, 보호 또는 비공개인지 여부는 속성의 가시성에 영향을 주지 않습니다.
해당 속성의 getter 및 setter 메서드는 비정적으로만 정의할 수 있습니다. 정적 메서드(정적)로 정의하면 동일한 방식으로 처리되지 않습니다.
property_exists()에 대한 일반적인 호출로는 마법 속성을 확인할 수 없습니다. canGetProperty() 또는 canSetProperty()를 호출해야 합니다.
이 속성 유형의 이름이 클래스 멤버 변수와 동일한 경우 후자가 우선합니다. 예를 들어, 위의 Foo 클래스에 label 멤버 변수가 있고 $object->label = 'abc'에 값을 할당하면 setter setLabel() 메서드 대신 멤버 변수에 할당됩니다.
사실 이 문장은 우리의 setter와 getter가 숨겨진 속성과 보호되는 속성에만 작동한다는 것을 의미합니다. public 수정자에 의해 수정된 변수인 경우 setter나 getter를 거치지 않고 직접 할당되고 획득됩니다. 예:
dfa772b8e31c4c8678194fbb30e36621 * Site: www.weiyongqiang.com * Date: 2017/3/6 * Time: 23:29 */ namespace frontend\components; use yii\base\Component; class UserInfo extends Component { public $userid = 11; public $userName; public function __construct(array $config) { parent::__construct($config); } public function setUserId($userId) { echo 123; $this->userId = $userId; } public function getuserid() { //return $this->userId; return 123456; } } 然后实例化组件后的获取userid属性
$userInfo = new UserInfo([]);echo "<pre/>"; //$userInfo->userId = 10;echo $userInfo->userid;exit;
출력 결과는 다음과 같습니다. 11
즉, userid가 public의 속성인 경우입니다. modifier는 기본적으로 제가 정의한 getuserid를 입력하지 않기 때문에 속성이 공개 유형이고 속성을 균일하게 처리하려는 경우 getter를 사용하여 이를 달성할 수 없습니다.
이 기사는 Wei Yongqiang의 원본 작품이므로 허가 없이 복제할 수 없습니다: MarsWill » yii2의 getter 및 setter에 대해 참고할 사항입니다.
관련 권장 사항:
Javascript의 getter 및 setter에 대한 기본 소개
Vue.js로 인해 발생한 getter 및 setter에 대한 생각에 대해 이야기
ECMAScript5의 개체 접근자 속성: getters 및 setters 소개_ javascript 기술
위 내용은 yii2의 getter 및 setter와 관련하여 주의해야 할 사항은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!