php基础

PHP类型
  标量:boolean integer float string
  复合:array object callable
  特殊:resource null
预定义变量
  超全局变量:
    $GLOBALS:引用全局作用域中可用的全部变量
    $_SERVER:服务器和执行环境信息
      $_SERVER['SERVER_ADDR']:服务器ip地址
      $_SERVER['SERVER_NAME']:服务器主机名
      $_SERVER['SERVER_SOFTWARE']:服务器标识字符串
      $_SERVER['SERVER_PROTOCOL']:请求页面时通信协议的名称及版本
      $_SERVER['REMOTE_ADDR']:浏览当前页面用户ip地址
      $_SERVER['REMOTE_HOST']:浏览当前页面用户主机名
    $_GET
    $_POST
    $_FILE
    $_COOKIE
    $_SESSION
    $_REQUEST:$_GET、$_POST、$_COOKIE
    $_ENV:环境变量
    $php_errormsg:前一个错误信息
常量
  常量只包含标量数据
  常量不可取消或重新定义
  常量可在任何地方定义和访问
  常量相关函数:
    define()|const:定义常量
    constant():获取常量的值
    get_defined_constants():获取常量列表
    defined():判断是否定义该常量
  预定义常量:
    E_ERROR
    E_WARNING
    ..
    TRUE
    FALSE
    NULL
  魔术常量:
    __LINE__:当前行号
    __FILE__:文件完整路径和文件名
    __DIR__:文件所在的目录
    __FUNCTION__:函数名称
    __CLASS__:类的名称
    __TRAIT__:Trait 的名字
    __METHOD__:类的方法名
    __NAMESPACE__:当前命名空间的名称
类与对象
  属性
  类常量 const NAME='apple';
  类自动加载
    spl_autoload_register() 注册任意数量的自动加载器
    spl_autoload_register(function ($class_name) {
      require_once $class_name . '.php';
    });
  构造函数和析构函数
    __construct():构造函数
    __destruct():析构函数
  访问控制:public private protected
  对象继承:extends
  范围解析符: ::用于访问静态成员、类常量、覆盖类中的属性和方法
  static:静态关键字 不可用->操作符访问 必需用::访问
  抽象类:abstract
    抽象类不能被实例化
      类中有一个方法被声明为抽象的就必须声明为抽象类
      继承一个抽象类的时候,子类必须定义父类中的所有抽象方法
      方法的访问控制必须和父类中一样(或者更为宽松)
      方法的调用方式必须匹配,即类型和所需参数数量必须一致
      强制子类定义父类中的抽象方法
      抽象方法仅需要定义需要的参数
    对象接口:interface(声明接口) 声明的时候接口中的方法可定义方法名和参数,函数体都为空
      实现:implements 实现的时候,用类的方法实现相应接口方法中的方法
        // 声明一个'iTemplate'接口
        interface iTemplate
        {
          public function setVariable($name, $var);
          public function getHtml($template);
        }
        // 实现接口
        class Template implements iTemplate
        {
          private $vars = array();

          public function setVariable($name, $var)
          {
            $this->vars[$name] = $var;
          }
          //没有getHtml方法的话是不对的,实现接口的类必须包含所有接口中的方法
          public function getHtml($template)
          {
            foreach($this->vars as $name => $value) {
              $template = str_replace('{' . $name . '}', $value, $template);
            }

            return $template;
          }
        }
      继承:extends 可继承多个接口
      trait:代码复用
        <?php
          trait ezcReflectionReturnInfo {
            function getReturnType() { /*1*/ }
            function getReturnDescription() { /*2*/ }
          }

            class ezcReflectionMethod extends ReflectionMethod {
              use ezcReflectionReturnInfo;
              /* ... */
            }

          class ezcReflectionFunction extends ReflectionFunction {
            use ezcReflectionReturnInfo;
            /* ... */
          }
        ?>
    魔术方法
      __construct() 构造
      __destruct() 析构
      __call() 在对象中调用一个不可访问方法时,__call() 会被调用。
      __callStatic() 在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用
      __get() 读取不可访问属性的值时,__get() 会被调用
      __set() 在给不可访问属性赋值时,__set() 会被调用。
      __isset() 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。
      __unset() 当对不可访问属性调用 unset() 时,__unset() 会被调用。
      __sleep()
        serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。
        如果存在,该方法会先被调用,然后才执行序列化操作。
        此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。
        如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。
      __wakeup()
        unserialize() 会检查是否存在一个 __wakeup() 方法。
        如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。
        __toString() 用于一个类被当成字符串时应怎样回应
        __invoke() 当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用
      __set_state() 当调用 var_export() 导出类时,此静态 方法会被调用
      __clone()
        当复制完成时,如果定义了 __clone() 方法,
        则新创建的对象(复制生成的对象)中的 __clone() 方法会被调用,
        可用于修改属性的值(如果有必要的话)
      __debugInfo()
    final关键字:如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
    对象比较:==和===
    对象复制:__clone
    类型约束:函数的参数可以指定必须为对象(在函数原型里面指定类的名字),接口,NULL,数组或者callable
    后期静态绑定:static::who()
      static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的
    对象序列化:
      serialize()
      unserialize()
    命名空间:
      namespace关键字 显式访问当前命名空间或子命名空间中的元素 等价于类中的 self 操作符
      __NAMESPACE__ 包含当前命名空间名称的字符串

posted @ 2018-11-14 09:53  井梅0709  阅读(134)  评论(0编辑  收藏  举报