Home  >  Article  >  Backend Development  >  PHP object-oriented programming example study notes

PHP object-oriented programming example study notes

WBOY
WBOYOriginal
2016-08-08 09:27:05966browse

1. __get() and __set() methods

<!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() method

<!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>

3. clone object

<!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>

4. __clone() method

<!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>

5. __toString() method

<!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>

6. const keyword

<!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 MyClass{
            const constant = &#39;constant value&#39;;
            function showConstant(){
                echo self::constant."\n";
            }
        }
        echo MyClass::constant."\n";
        $class = new MyClass();
        $class->showConstant();
        ?>
    </body>
</html>

The above introduces the PHP object-oriented programming example study notes, including the content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn