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参数是一个数组,包含着要传递给方法的参数,

  • 相关阅读:
    java 9+版本中,接口的内容总结
    发红包的案例
    java中成员变量和局部变量的区别
    分别使用面向对象和面向过程两个不同的思路编写代码,打印输出一个数组,输出数组的格式:“[10,20,30,40,50]”
    题目要求:不能使用新数组,就用原来的唯一的数组进行反转
    request.getRequestDispatcher()和response.sendRedirect()区别
    Maven是什么
    字符串中的各种方法
    数组中的各种方法
    字符串的模式匹配方法-match-search-repalce
  • 原文地址:https://www.cnblogs.com/lgxtry/p/9492893.html
Copyright © 2011-2022 走看看