ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクト指向プログラミングのサンプル学習ノート

PHP オブジェクト指向プログラミングのサンプル学習ノート

WBOY
WBOYオリジナル
2016-08-08 09:27:05966ブラウズ

1. __get() メソッドと __set() メソッド

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here
        class animal{
            private $name;
            private $color;
            private $age;
            public function __get($property_name) {
                echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";
                if(isset($this->$property_name)){
                    return $this->$property_name;
                }
                else
                {
                    return NULL;
                }
            }
            
            public function __set($propertyname, $value) {
                echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";
                $this->$propertyname = $value;
            }
        }
        $pig = new animal();
        $pig->name = "猪";
        $pig->color = "白色";
        $pig->age = "1岁";
        echo "称呼:".$pig->name."<br>";
        echo "颜色:".$pig->color."<br>";
        echo "年龄:".$pig->age."<br>";
        ?>
    </body>
</html>

2. __call() メソッド

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here
        class Test{
            function __call($function_name, $args) {
                print "你所调用的函数:$function_name(参数:";
                print_r($args);
                print ")不存在!<br>\n";
            }
        }
        $test = new Test();
        $test->demo("one", "two", "three");
        echo "this  is a test<br>";
        ?>
    </body>
</html>

4. __clone() メソッド

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here
         class animal{
             //下面是动物的成员属性
             public $name = &#39;&#39;;//成员属性name
             public $color = &#39;&#39;; //成员属性color
             public $age = &#39;&#39;; //成员属性size
             
             //定义一个构造方法, 参数为$name、$color和$age
             function __construct($name, $color, $age) {
                 //通过构造方法传进来的$name 给成员属性$this->name赋初值
                 $this->name = $name;
                 //通过构造方法传进来的$color 给成员属性$this->color赋初值
                 $this->color = $color;
                 //通过构造方法传进来的$age 给成员属性$this->age赋初值
                 $this->age = $age;
             }
             
             function getInfo(){
                 echo '动物的名字叫做'.$this->name.',动物的颜色是'.$this->color.',动物的年龄是'.$this->age.'.';
             }
}
$pig = new animal("猪", "白色", "1岁");
//使用clone克隆新对象pig2,和$pig对象具有相同的属性和方法
$pig2 = clone $pig;
$pig2->getInfo();
?>
    </body>
</html>

5.
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here
         class animal{
             //下面是动物的成员属性
             public $name = &#39;&#39;;//成员属性name
             public $color = &#39;&#39;; //成员属性color
             public $age = &#39;&#39;; //成员属性size
             
             //定义一个构造方法, 参数为$name、$color和$age
             function __construct($name, $color, $age) {
                 //通过构造方法传进来的$name 给成员属性$this->name赋初值
                 $this->name = $name;
                 //通过构造方法传进来的$color 给成员属性$this->color赋初值
                 $this->color = $color;
                 //通过构造方法传进来的$age 给成员属性$this->age赋初值
                 $this->age = $age;
             }
             
             function getInfo(){
                 echo '动物的名字叫做'.$this->name.',动物的颜色是'.$this->color.',动物的年龄是'.$this->age.'.';
             }
             function __clone() {
                 //$this指的复本pig2,而$that是指向原本pig,这样就在本方法中改变了复本的属性;
                 
                 $this->name = "假的$this->name";
                 $this->age = '2岁';
             }
}
$pig = new animal("猪", "白色", "1岁");
//使用clone克隆新对象pig2,和$pig对象具有相同的属性和方法
$pig2 = clone $pig;
$pig->getInfo();
$pig2->getInfo();
?>
    </body>
</html>

6. const キーワード

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here 
        //Declare a simple class
        class TestClass{
            public $foo;
            public function __construct($foo) {
                $this->foo = $foo;
            }
            
            public function __toString() {
                return $this->foo;
            }
        }
        $class = new TestClass('HelloWorld');
        echo $class;
        ?>
    </body>
</html>


以上、PHPオブジェクト指向プログラミングのサンプル学習ノートを内容も含めて紹介しましたので、PHPチュートリアルに興味のある友人の参考になれば幸いです。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。