$this는 인스턴스화 없이 정적 메모리 공간이 생성되는 반면 클래스는 메모리 공간을 생성하기 전에 인스턴스화되어야 하기 때문에 클래스의 정적 함수에 사용할 수 없습니다. 두 메모리는 함께 있지 않으며 서로 액세스할 수 없습니다.
그러므로 다음 작성은 잘못되었습니다.
<span style="font-family: 微软雅黑, "Microsoft YaHei";">class Book extends Goods {<br/> public $anthor;<br/> public $publisher;<br/> static public function get_author($author){<br/> $this->author = $author;<br/> } <br/>}</span>
즉, $this는 객체를 사용하여 비정적 메서드를 호출해야만 사용할 수 있습니다.
비정적 메서드는 이후에만 결정할 수 있습니다.
1. 호출 메서드를 호출하는 개체는 다음과 같이 해당 개체
입니다.
이것도 마찬가지입니다. $this는 어떤 클래스의 위치와는 관계가 없고, 어떤 객체가 인스턴스화되는지만 알 수 있습니다.2. 객체 환경은 다음과 같이 전달될 수 있습니다.
현재 메소드에서 객체 환경이 결정된 경우, 커버 메소드에서 비정적 메소드에 대한 정적 호출이 있는 경우, 그러면 현재 개체 환경은 정적으로 호출되는 비정적 메서드로 전달됩니다.
$이것이 항상 개체가 있는 위치를 나타내는 것은 아닙니다.
public Public
protect Protected
private Private
멤버(속성, 메서드)에 액세스할 수 있는 위치를 설명하는 데 사용됩니다.
참고:
PHP는 클래스 개념을 사용하여 멤버를 수정하고 자격을 부여합니다.
PHP는 액세스된 코드를 클래스 내부, 클래스 외부, 상속 체인의 클래스 내부의 세 영역으로 나눕니다.
는 멤버가 액세스되는 위치와 멤버가 정의된 위치에 따라 결정됩니다.
속성을 예로 들어 보겠습니다.
public
Public은 멤버가 이 클래스에 있음을 의미합니다. 상속 체인의 클래스 내부와 클래스 외부 모두에 접근할 수 있습니다!
protect
Protected는 이 클래스 내에서 그리고 상속 체인(하위 클래스, 상위 클래스)의 클래스에서 멤버에 액세스할 수 있음을 의미합니다.
private
Private, 이는 이 범주 내에서만 접근 가능해요!
선택 방법:
한 가지 원칙은 캡슐화를 반영하도록 노력하는 것입니다. 캡슐화란 내부 구현을 최대한 숨기고 외부 작업 인터페이스만 개발하는 것을 의미합니다!
구문적으로, 즉 외부 사용에 필요하지 않은 속성과 메서드를 사유화(보호)하고 필요한 일부 공개 메서드만 남겨두세요!
1、一定要先明确访问的是哪里定义的!
2、私有成员不能被重写
只有在自己的类中才能访问到对应的私有成员
建议是
如果需要通过继承,你就使用保护的,少用私有的!
在没有继承时,尽量使用私有的!
3、在重写时,如果重写成员的访问级别不一致。子类的级别比父类的级别,相等或者弱,可以!强,不行!
这样是语法规定,如果想解释也是很简单的
是这样的,我简单说明
1 基类有一个方法,比如 // 我们不考虑Object作为所有类的基类啦。 呵呵呵!
public void method1(){ method2(); // 此方法需要调用method2(); } public void method2(){ // 如果这个方法是abstract 的话,也许会看得更清楚,不过不常见. }
2 子类重写了
@Override private void method2(){ // 当然,编译错误,我们只是用来说明这样做的问题 }
3 子类的子类
如果他调用 method1() 会出现什么后果呢?
a) 他能访问method1(), 因为那是他的基类,且是public
b) 但很可惜,method1()里面 却不能访问method2()了,因为在父类是private的了。
这岂不是很可笑的情况。
所以,子类不能比父类的更私有,但可以更公开。 呵呵。这样才能保证父类已经实现的代码能够使用。
另:从5.0开始,子类方法override时,可以返回与父类不同的类型。但参数必须完全相同。
4、
1, 兼容性的问题
早先的 php的面向对象不完善,没有访问控制!
在声明属性时,使用 var 关键字!
声明方法时,什么都不使用!function
为了兼容,上面的做法还是可以使用!
var, function。访问权限都是public的!
相关推荐:
위 내용은 PHP에서 $this의 사용법 및 액세스 한정자에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!