分享

php基础

 井梅 2018-09-25

一、PHP类型:

1.         标量:boolean integer float string

2.         复合:array object callable

3.         特殊:resource null

二、预定义变量:

1.         超全局变量:

1)         $GLOBALS:引用全局作用域中可用的全部变量

2)         $_SERVER:服务器和执行环境信息

a)         $_SERVER['SERVER_ADDR']:服务器ip地址

b)         $_SERVER['SERVER_NAME']:服务器主机名

c)         $_SERVER['SERVER_SOFTWARE']:服务器标识字符串

d)         $_SERVER['SERVER_PROTOCOL']:请求页面时通信协议的名称及版本

e)         $_SERVER['REMOTE_ADDR']:浏览当前页面用户ip地址

f)          $_SERVER['REMOTE_HOST']:浏览当前页面用户主机名

3)         $_GET

4)         $_POST

5)         $_FILE

6)         $_COOKIE

7)         $_SESSION

8)         $_REQUEST$_GET$_POST$_COOKIE

9)         $_ENV:环境变量

10)     $php_errormsg:前一个错误信息

三、常量:

1.         常量只包含标量数据

2.         常量不可取消或重新定义

3.         常量可在任何地方定义和访问

4.         常量相关函数:

1)         define()|const:定义常量

2)         constant():获取常量的值

3)         get_defined_constants():获取常量列表

4)         defined():判断是否定义该常量

5.         预定义常量:

1)         E_ERROR

2)         E_WARNING

3)         ..

4)         TRUE

5)         FALSE

6)         NULL

6.         魔术常量:

1)         __LINE__:当前行号

2)         __FILE__:文件完整路径和文件名

3)         __DIR__:文件所在的目录

4)         __FUNCTION__:函数名称

5)         __CLASS__:类的名称

6)         __TRAIT__Trait 的名字

7)         __METHOD__:类的方法名

8)         __NAMESPACE__:当前命名空间的名称

四、类与对象

1.         属性

2.         类常量 const NAME='apple';

3.         类自动加载

1)         spl_autoload_register()  注册任意数量的自动加载器

spl_autoload_register(function ($class_name) {

require_once $class_name . '.php';

});

4.         构造函数和析构函数

1)         __construct():构造函数

2)         __destruct():析构函数

5.         访问控制:public private protected

6.         对象继承:extends

7.         范围解析符: ::用于访问静态成员、类常量、覆盖类中的属性和方法

8.         static:静态关键字 不可用->操作符访问 必需用::访问

9.         抽象类:abstract

1)         抽象类不能被实例化

2)         类中有一个方法被声明为抽象的就必须声明为抽象类

3)         继承一个抽象类的时候,子类必须定义父类中的所有抽象方法

4)         方法的访问控制必须和父类中一样(或者更为宽松)

5)         方法的调用方式必须匹配,即类型和所需参数数量必须一致

6)         强制子类定义父类中的抽象方法

7)         抽象方法仅需要定义需要的参数

10.     对象接口:interface(声明接口) 声明的时候接口中的方法可定义方法名和参数,函数体都为空

1)         实现: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;

}

}

2)         继承:extends 可继承多个接口

//trait:代码复用

<?php

trait ezcReflectionReturnInfo {

function getReturnType() { /*1*/ }

function getReturnDescription() { /*2*/ }

}

 

class ezcReflectionMethod extends ReflectionMethod {

use ezcReflectionReturnInfo;

/* ... */

}

 

class ezcReflectionFunction extends ReflectionFunction {

use ezcReflectionReturnInfo;

/* ... */

}

?>

11.     魔术方法

1)         __construct()  构造

2)         __destruct()   析构

3)         __call()       在对象中调用一个不可访问方法时,__call() 会被调用。

4)         __callStatic() 在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用

5)         __get()        读取不可访问属性的值时,__get() 会被调用

6)         __set()        在给不可访问属性赋值时,__set() 会被调用。

7)         __isset()      当对不可访问属性调用 isset() empty() 时,__isset() 会被调用。

8)         __unset()      当对不可访问属性调用 unset() 时,__unset() 会被调用。

9)         __sleep()

a)         serialize() 函数会检查类中是否存在一个魔术方法 __sleep()

b)         如果存在,该方法会先被调用,然后才执行序列化操作。

c)         此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。

d)         如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。

10)     __wakeup()

a)         unserialize() 会检查是否存在一个 __wakeup() 方法。

b)         如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。

11)     __toString()   用于一个类被当成字符串时应怎样回应

12)     __invoke()     当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用

13)     __set_state()  当调用 var_export() 导出类时,此静态 方法会被调用

14)     __clone()

a)         当复制完成时,如果定义了 __clone() 方法,

b)         则新创建的对象(复制生成的对象)中的 __clone() 方法会被调用,

c)         可用于修改属性的值(如果有必要的话)

15)     __debugInfo()

12.     final关键字:如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

13.     对象比较:=====

14.     对象复制:__clone

15.     类型约束:函数的参数可以指定必须为对象(在函数原型里面指定类的名字),接口,NULL,数组或者callable

16.     后期静态绑定:static::who()

1)         static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的

17.     对象序列化:

1)         serialize()

2)         unserialize()

18.     命名空间:

1)         namespace关键字  显式访问当前命名空间或子命名空间中的元素 等价于类中的 self 操作符

2)         __NAMESPACE__    包含当前命名空间名称的字符串

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多