php面向对象基础一
每学一门后端语言,都会先让你了解什么面向对象?现在我们就一起去了解什么是面向对象。
什么是面向对象?!什么是面向过程?!
面向对象:把构成问题事务分解成各个对象,建立对象的目的描述某个事物在整个解决问题的步骤中的行为。
面向过程:分析出解决问题所需要的步骤。
1.类
类的定义:
class 类名{
字段(属性)
方法(函数)
}
继承:extends
接口:interface
接口实现:implements
继承:parent::方法名 或者类名::方法名
抽象类(方法):abstract
特别注意:解决类名的冲突可以使用命名空间 namespace
2.修饰符(public、private、protected)
修饰符 | 作用域 |
---|---|
public | 任意作用域 |
private | 类内 |
protected | 子类中 |
**3.include与require区别**
差异:二者出现的抛出的异常错误不一样,当二者应用不存在的文件时,前者会抛出warring并且继续进行下面的代码,后者会抛出error不会继续执行剩下的代码。
Include:主要引入html文件
Require:主要用于引入php文件(严谨)
相同处:都可以用于引入文件
扩展:
require_once和include_once
require和require_once
Require:同一个文件多次会报错
require_once:多次使用则会只引入一次(同一个文件引入只能引入一次)
Include和include_once
Include:可以多次引入
Include_once:多次使用则会只引入一次(同一个文件引入只能引入一次)
Require比require_once性能好
4.关键字(this、self)
this、self主要用于常量和静态变量的使用
public static $st=666;
const PI = 3.1415926;
public function onlyRead(){
echo "静态字段:<br>";
echo "类名读取:".Person::$st."<br>";
echo "self读取:".self::$st."<br>";
echo "this读取:".$this::$st."<br>";
}
在类外访问常量和静态变量时,只能通过类名访问。
5.静态方法和变量
定义静态变量:修饰符 static 变量名
定义静态方法:修饰符 static function 函数名(){}
public static $st=666;
public static function setST($type){
// Person::$st = $type; //静态字段赋值只能通过self、类名赋值 不可以通过$this
self::$st = $type;
}
6.常量(const)
定义常量:const 常量名 = 值
访问常量的方法:
类外:
echo "类名读取:".Person::PI."<br>"; //类名访问
类中:
public function onlyReadConst(){
echo "const字段:<br>";
echo "类名读取:".Person::PI."<br>";
echo "self读取:".self::PI."<br>";
echo "this读取:".$this::PI."<br>";
}
特别注意:
常量一旦定义就不可以修改其值。
7.属性操作
自定义:set、get方法
public function getName(){
return $this->name;
}
public function setName($name){
$this->name = $name;
}
Php自带API:魔法函数 __get(),__set()
public function __get($type){
return $this->$type;
}
public function __set($type,$value){
$this->$type = $value;
}
8.构造函数
(1)自定义构造函数
无参构造体
public function Person(){
echo "自定义无参构造体<br>";
}
自定义有参构造体
public function Person($name,$age=10){
echo "自定义有参构造体<br>";
$this->name = $name;
$this->age = $age;
}
(2)魔法构造函数
API无参构造体
public function __construct(){
echo "API实现无参构造体<br>";
}
API有参构造体
public function __construct($name,$age=100){
echo "魔法函数之有参构造体<br>";
$this->name = $name;
$this->age = $age;
}
特别注意:
在php中一个类有且仅有一个构造函数。