面向对象内容
对象是由属性与方法组成,对象中的属性其实就是之前学习的变量,对象中的方法其实就是之前学习的函数。
- 类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
- 对象 - 是类中的一个实例。
- 成员函数 - 类中的一个方法,可用于访问对象中的属性。
- 成员变量 - 定义在类中的变量,该变量对外不可见,可以通过函数成员访问,在类被实例化为对象后,该变量即可称为对象的属性。
- 父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。
- 子类 − 一个类继承其他类称为子类,也可称为派生类。
- 继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
访问控制
PHP中private和public还有protected的区别。
- public(公有): 公有的类成员可以在任何地方被访问。
- protected(受保护): 受保护的类成员则可以被其自身以及其子类和父类访问。
- private(私有): 私有的类成员则只能被其定义所在的类访问。
面向对象实例如下:
class person{
function module($name,$gender,$wage){
$this->name = $name;
$this->gender = $gender;
$this->wage = $wage;
}
function say(){
print "name: ".$this->name." gender: ".$this->gender." wage: ".$this->wage;
}
}
class home extends person{
private $home //可在此声明一个受保护的变量
function coustruct($name,$gender,$wage,$home){
parent::_coustruct($name, $gender, $wage);
/*不管是函数名还是预定义变量名 有下划线的 都是广泛使用函数或者变量
目的应该是避免跟用户自定义的名字冲突
命名的规则
加一个为私有的
加两个一般都是系统默认的*/
$this->name = $name;
$this->gender = $gender;
$this->wage = $wage;
$this->home = $home;
}
function say(){
parent::say(); //直接调取父类中的say方法(函数)
print "name: ".$this->name." gender: ".$this->gender." wage: ".$this->wage." home: ".$this->home;
}
}
$jensen = new home();
$jensen->coustruct("jensen","man","7k","poor");
$jensen->say();
$kiity = new home();
$kiity->coustruct("kitty","girl","20k","rich");
$kiity->say();
?>
常量基本应用
<?php
class const_use{
const word = "test this const method";
function _construct(){
echo self::word.PHP_EOL;
//self:: 指向类的本身,通常用于调用静态变量值;
}
}
//以下是输出常量方式类别:
echo $const_use::word.PHP_EOL;
$test = new const_use();
$test->_construct();
1. $smarty->assgin();是调用$smarty类下的assgin()方法。
2. $arr("1"=>"苹果","2"=>"橘子");是数组定义,"1"是键名,"苹果"是键值。
面向对象之接口
- 接口中定义的所有方法都必须是公有。
- 要实现一个接口,使用 implements 操作符。
- 类中必须实现接口中定义的所有方法,否则会报一个致命错误。
- 类可以实现多个接口,用逗号来分隔多个接口的名称。
匿名函数
- 闭包也就是PHP的匿名函数, 但是和函数不同的是,闭包可以通过use使用函数声明时所在作用域的变量的值。
function getnumber(){
$func = function ($str){
print $str;
};
return $func ;
}
$print_func = getnumber();
$print_func("hello kitty.");
//返回结果是: hello kitty.
//闭包函数还有个参数是use函数该函数作用是减少foreach循环减少代码量。