1.文件包含实现方式
1.include’文件名’(include(‘文件名’))
找不到文件警告错误,不会影响后续代码的继续执行
2.require ‘文件名’
之熬不到文件致命错误,后续代码终止执行
3.include_once ‘文件名’
只包含一次
4.require_once ‘文件名’
同上
注:
- 在保存结构和数据文件时,使用require
- 在保存外部可能存在文件时,使用include
- 尽可能不使用_once来进行文件包含:效率低,是否包含应由开发者自己控制
2.类
基本语法:class 类名{}
实例化:new 类名();
对象:$变量名 = new 类名();
流程:
- 创建类
- 通过new类名实例化对象得到类的具体对象
- 可以通过new实例化无限个对象
3.类成员
1.定义:定义在类结构内的一级成员
分类:
- 成员变量(属性):给对象存储数据的变量
- 成员函数(方法):给对象调用解决问题的函数
- 类常量:属于类内部的常量,语法:
const 常量名 = 值
属性方法需要使用访问修饰限定符,用public修饰
2.成员访问:
属性和方法都属于对象访问,类常量属于类访问
#实例化
$object = new 类名();
#属性访问
$object -> 属性名;
#方法访问
$object -> 方法名([实参]);
增删改查:
class Buyer{
public $name;
public $money = 0;
function display(){
echo __CLASS__;
}
const BIG_NAME = 'BUYER';
}
$b = new Buyer();
echo $b -> money;
# 修改
$b -> money = 10;
# 增加
$b -> eye = 1;
# 查看
var_dump($b);
#删除
unset($b -> name);
#操作方法
$b -> display();
注:除了以上三个类成员,不能在类结构中直接写任何代码
访问属性时都不用带$符号
4.访问修饰限定符
定义:用在属性或者方法前的修饰关键字,用来控制方法或者属性的访问权限
分类:
- public:公有,类内和类外都可以访问
- protected:受保护,只允许在相关类内部访问(继承有用)
- private:私有,只允许在定义类内部访问(如类内方法可以访问)
注:属性必须要加访问修饰限定符,方法可以没有(默认public)
5.类内部访问对象
定义:$ this,方法内部内置的一个对象,会自动指向来调用方法的的对象
需要使用$ this引入对象
class Saler{
public $count = 100;
protected $discount = 0.8;
private $money = 100;
function getAll(){
echo $this->count,$this->discount,$this->money;
}
}
$s = new Saler();
$s ->getAll();
注:$this 代表的是对象,而 $this所在的环境为类内部的方法内部,所以 $this对象是在类内部访问,因此可以访问所有属性和方法,不受修饰限定符限制
一个类可以实例化多个对象,每个对象访问成员方法时,$this就代表当前 $this所在方法的外部对象
尽可能增加类对成员的控制,尽可能多的使用private,少使用public
6.构造方法
- 目的:实现对象的初始化
构造方法通常是为了实现对象所需资源的初始化(属性),对象实例后会自动调用 - 构造方法本质为方法:
1.受访问修饰限定符控制(对象产生的位置会产生改变) - 方法实现:__construct()
class Saler{
public $count;
private $money;
function __construct($count,$money){
echo __CLASS__;
$this-> count = $count;
$this-> money = $money;
}
}
$s1 = new Saler(100,100);
$s2 = new Saler(1,1);
var_dump($s1);
var_dump($s2);
7.对象传值
概念:保存对象的变量赋值给另一个变量
在php中,对象传值是引用传值,即两个变量指向同一个对象的内存地址,即:只有一个对象
8.范围解析操作符
需要访问类常量的时候使用范围解析操作符:类名::常量名 (对象名::常量名)
class Saler{
const PI = 3.14;
}
$s = new Saler();
#echo $s->PI; #无法访问
echo Saler::PI;
echo $s::PI;