zoukankan      html  css  js  c++  java
  • php核心技术与最佳实践(笔记一)

    1.1面向对象的型与本

    类是对象的抽象组织,对象是类的具体存在。

    1.1.1对象的形

    <?php
    class Person{
        public $name;
        public $gender;
        public function say(){
            echo $this->name,"is ",$this->gender;
        }
    }
    
    $student = new Person();
    $student->name='Tom';
    $student->gender='male';
    $student->say();

    1.1.2对象的本

    1.1.3对象与数组

    1.1.4对象与类

    1.2魔术方法的应用

    魔术方法是以两个下划线开头,具有特殊作用的一些方法

    __construct方法就是一个标准的魔术方法,称为构造方法,定义了这个方法后,每次创建对象时都会先调用此方法,适合在使用对象之前做一些初始化工作;

    如果构造函数定义了参数,则实例化对象必须传参,或者为参数定义默认值,否则会报错;

    class Family{
        public $people;
        public $location;
        public function __construct($p=null,$loc=''){
            $this->people = $p;
            $this->location = $loc;
        }
    }
    
    new Family;

    1.2.1  __set和__get方法

    <?php
    class Account{
        private $user = 1;
        private $pwd = 2;
    }
    $a = new Account;
    echo $a->user;

    以上代码会报一个不允许访问私有属性的错误

    <?php
    class Account{
        private $user = 1;
        private $pwd = 2;
    
        public function __set($name,$value){
            echo "Setting $name to $value 
    ";
            $this->$name = $value;
        }
    
        public function __get($name){
            if (!isset($this->$name)) {
                $this->$name='default value';
            }else{
                return $this->$name;
            }
        }
    }
    $a = new Account;
    echo $a->user;
    $a->user = 'haha';
    echo $a->user;

    增加__set和__get方法后代码能运行,php将这两个方法归类为重载,php的重载值动态的创建类的属性和方法。

    这两个方法在访问的属性不存在时会调用,如果属性存在,是不调用的。

    1.2.2  __call和__callStatic方法

    如何防止调用不存在的方法而出错?使用__call魔术方法重载;

    mixed __call(string $name,array $arguments)

    当调用一个不可访问的方法时,__call方法会被调用。其中$name参数是要调用的方法名,$arguments参数是一个数组,包含着要传递给方法的参数,

  • 相关阅读:
    算法第四章上机实验报告
    算法第四章作业
    算法第三章上机实验报告
    算法第三章作业
    算法第二章上机实验报告
    算法第二章作业
    第五次c++作业总结
    第三次c++作业总结
    Linux上部署Java项目
    JVM类加载
  • 原文地址:https://www.cnblogs.com/lgxtry/p/9492893.html
Copyright © 2011-2022 走看看