1. __set() 및 __get() 메서드
<code><span><span>class</span><span>A</span> {</span><span>private</span><span>$n1</span>; <span>private</span><span>$n2</span>; <span>private</span><span>$n3</span>; <span>//使用__set()方法来管理所有的属性</span><span>public</span><span><span>function</span><span>__set</span><span>(<span>$pro_name</span>,<span>$pro_val</span>)</span> {</span><span>$this</span>->pro_name = <span>$pro_val</span>; } <span>//使用__get()方法获取所有属性的值</span><span>public</span><span><span>function</span><span>__get</span><span>(<span>$pro_name</span>)</span> {</span><span>if</span>(<span>isset</span>(<span>$pro_name</span>)){ <span>return</span><span>$this</span>->pro_name; }<span>else</span>{ <span>return</span><span>null</span>; } } } <span>$a1</span> = <span>new</span> A(); <span>$a1</span>->n1 = <span>"aaa"</span>; <span>echo</span><span>$a1</span>->n1;</code>
1. 요약
2. 캡슐화
3 . 다형성
PHP는 기능적 다형성을 지원하지 않습니다.
<code><span><span>class</span><span>A</span> {</span><span>public</span><span><span>function</span><span>test1</span><span>(<span>$a</span>,<span>$b</span>)</span> {</span><span>echo</span><span>'接受一个参数'</span>; } <span>public</span><span><span>function</span><span>test2</span><span>(<span>$a</span>)</span> {</span><span>echo</span><span>'接受两个参数'</span>; } <span>// 这里提供一个__call;</span><span>// 当一个<strong>对象</strong>调用某个方法,而该方法不存在,则系统自动调用__call</span><span><span>function</span><span>__call</span><span>(<span>$method</span>,<span>$p</span>)</span> {</span> var_dump(<span>$p</span>); <span>if</span>(<span>$method</span> == <span>"test"</span>){ <span>if</span>(count(<span>$p1</span>)==<span>1</span>){ <span>$this</span>->test1(<span>$p</span>); }<span>else</span><span>if</span>(count(<span>$p</span>)==<span>2</span>){ <span>$this</span>->test2(<span>$p</span>) } } } } <span>$a</span> = <span>new</span> A(); <span>echo</span><span>$a</span>->test(<span>1</span>); 也可以判断类型。</code>
다시 쓰기(덮어쓰기): 매개변수의 이름과 개수가 동일해야 합니다.
5. 추상 클래스
이상 내용의 측면을 포함하여 36가지 PHP 객체지향 측면을 소개하였습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.