1.变量的管理php
1.isset用来判断某个变量是否已经被php声明,返回一个布尔值,若是变量被定义,返回true 不然返回false 当变量被定义成null也返回false。一样能够检查某个数组中元素是否被设置。能够接受任意数量参数 isset($val1,$val2 ...) 可是只有所有被设置了才返回true 2.unset 取消定义以前的变量 若是没有其余变量引用的话会释放这个变量的内存空间。用inset检测unset的值返回false 3.empty 检测一个变量是否被声明或者是否为false
超全局变量 $_GET:一个包含全部php从客户浏览器收到的get变量 $_POST:一个包含全部php从客户浏览器收到的post变量 $_COOKIE:一个包含全部php从客户浏览器收的cookie的数组 $_ENV:一个包含环境变量的数组 $_SERVER:一个存放web环境变量的数组
2.转义程序员
双引号变量回解析,单引号不会解析。双引号里面能够有转义,单引号不行
3.多态web
class Cat { function miau() { print("miau"); } } class Dog { function wuff() { print("wuff"); } } function printResult($obj) { if($obj instanceof Cat) { $obj->miau(); } else if($obj instanceof Dog) { $obj->wuff(); }else { print("error:wrong object"); } } echo printResult(new Dog()); echo "<br>"; echo printResult(new Cat()); //下面是结果 wuff miau
能够看出本例子不能够扩展,若是再加一个动物则必须改源码 因此用下面方法替换
创建一个父类,创建cry方法。再分别创建两个子类cat dog类而且也创建cry方法(对父类方法重写),再用一个实例函数判断对象,分流。这就保证方法的扩展性。加一个子类继承父类便可。而没必要改源码数组
//定义一个父类 class Father { function cry($arg) { print($arg); } } class Cat extends Father{ function cry() { print("Cat"); } } class Dog extends Father{ function cry() { print("Dog"); } } function printResult($obj) { if($obj instanceof Cat) { $obj->cry(); } else if($obj instanceof Dog) { $obj->cry(); }else { print("error:wrong object"); } } echo printResult(new Dog()); echo "<br>"; echo printResult(new Cat());
4.父类,子类中的parent:: self::浏览器
self:: 调用当前类的方法,属性 parent::调用父类的方法和属性 //父类 class Father { const name = 'father'; public function __construct() { print(self::name); } } //子类 class child extends Father { const name = 'child'; public function __construct() { parent::__construct(); echo '<br>'; print(self::name); } } $child = new child();
5.instanceof 操做符 判断类的逻辑二元运算符微信
class Father { public $name = __CLASS__; } class Child extends Father { public $name = __CLASS__; } class test { public $name = __CLASS__; } function judge($obj) { if(!($obj instanceof Father)) { print($obj->name); print(' is a father'); } } judge(new Child()); judge(new test());
6.toString方法(里面是return的值)cookie
class Person { private $name; function __construct($name) { $this->name = $name ; } function __toString() { return $this->name;//必定要return值 调用类的时候后返回 } } $obj = new Person('mmy family'); print($obj);
7.try catch exception 必须继承exception 类函数
class NullHandleException extends Exception { function __construct($message) { parent::__construct($message); } } function printObj($obj) { if($obj == null) { throw new NullHandleException("print Object received null object"); } print($obj.'<br>'); } class MyName { private $name; function __construct($name) { $this->name = $name; } function __toString() { return $this->name; } } try { printObj(new MyName("boss")); printObj(NULL); printObj(new MyName("jone")); } catch(NullHandleException $e) { print $e->getMessage().'<br>'; print "in file " . $e->getFile().'<br>'; print "on line " . $e->getLine(); } //结果是 boss print Object received null object in file /mnt/hgfs/www/test/class.php on line 269
8.__autoload 自动载入post
MyClass.php class MyClass { function hello() { print "hello my friend "; } } general.inc function __autoload($class_name) { // echo$_SERVER["DOCUMENT_ROOT"]."/classes/".$class_name.".php"; require_once($_SERVER["DOCUMENT_ROOT"]."/classes/".$class_name.".php"); } main.php require_once('general.inc'); $class = new MyClass(); echo 'hello';exit; $class->hello(); //__autoload 主动调用class自动加载(载入)
**ui
**