一、条件加载和强制加载
如果我们需要在网站的多张页面上,引用相同的PHP、HTML或文本的话,可以使用include,include_once,或 require语句。也就是说,通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件,实现嵌套使用。
include 和 require 语句是相同的,但是错误处理方面却是不同的:
include:条件加载,只生成警告(E_WARNING),并且脚本会继续。
include_once:去重加载,只允许加载一次文件。
require:强制加载,会生成致命错误(E_COMPILE_ERROR)并停止脚本。
require_once:强制去重加载。
代码举例:
include 'custom.php';
include 'custom.php';//脚本继续加载
include_once 'custom.php';//只允许加载一次文件,下面语句不加载。
include_once 'custom.php';
echo '这是个小试验';
echo '<hr>';
require 'custom.php';
require 'a.php';//因为找不到a.php这个文件,所以出现错误提示,后面的echo内容不再执行。
echo "这是个小试验";
echo '<hr>';
效果展示:
二、类与对象
类:用来描述具有相同属性和方法的对象的集合。类的定义包含了数据的形式以及对数据的操作。每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法的定义。一个类可以包含有属于自己的常量,变量(即“属性”)以及函数。
类的语法:
class favs
{
public $x;
public $y = "这是一个变量(属性)";
public function mylove ($a, $b) {//这里也可以写函数
[..]
}
[..]
}
对象:是类的实例。实例化一个对象需要使用new关键字。即类是一个虚影,而对象可以将这个虚影实体化。
class favs
{
}
$favs = new favs();
三、类属性及属性的访问控制
类属性分为:常规属性(动态属性)、静态属性、抽象属性。
在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性。
静态属性则是用 ::(双冒号):self::$property 来访问。
代码举例:
class user
{
//1.动态属性:即常规属性
public $name='王小丁';
public $sex='男';
public $age="22";
public $options = [1,2,3];
public $output = <<< 'RES'(这个是nowdoc类型,类似于单引号的用法)
<h3>可爱的家</h3>
RES;
//2.静态属性:可以更新,在创建时一定要赋值,要么有默认值,本质上是一个变量,而不是常量。例如下面,我们可以更换国籍和姓名等属性的值。
public static $nationality = "中国/CHINA";
//3.抽象属性:没有值,没有被初始化,默认值是null。
public $salary;
}
$user = new User();
$user->name = "李玉湖";
//->:对象运算符/对象成员访问符
echo "姓名:{$user->name},年龄:{$user->age}<br>";
echo $user->output . '<br>';
//访问静态属性:使用范围解析符,双冒号::
User::$nationality = '英国/ENGLAND';
echo User::$nationality;
var_dump($user->salary);
var_dump(is_null($user->salary));
效果展示:
四、类属性的访问控制
属性的访问控制:类属性必须定义为公有,受保护,私有之一。
如果用 var 定义,则被视为公有。
对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
被定义为公有的类成员可以在任何地方被访问。
被定义为受保护的类成员则可以被其自身以及其子类和父类访问。
被定义为私有的类成员则只能被其定义所在的类访问。
class Myfav
{
// 声明一个公有的方法
public function Myfav1() { }
// 声明一个受保护的方法
protected function Myfav2() { }
// 声明一个私有的方法
private function Myfav3() { }
// 此方法为公有
function goods()
{
$this->Myfav1();
$this->Myfav2();
$this->Myfav3();
}
}
$Myfav = new Myfav;
$Myfav->Myfav1(); // 这行能被正常执行
$Myfav->Myfav2(); // 这行会产生一个致命错误
$Myfav->Myfav3(); // 这行会产生一个致命错误
$Myfav->goods(); // 公有,受保护,私有都可以执行
五、总结
1.类和对象听起来简单,初接触是发蒙的。但是类和对象与字符串函数和数组函数类似,就好像语文里面学的诗歌、小说、散文等属于PHP下不同的体裁,既然体裁不同,那么书写方法就不同,各有一套自己的规则。
2.以上举例的代码中红色字体要特别注意,切记。
3.PHP中有预定义标识符,用户在编写代码时要避免给类、常量或者变量起这些名字,否则易出现混淆。