1.文件加载
1.1 条件加载(include/include_once)
include 语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。
有一个名为 “footer.php” 的标准的页脚文件
<?php
echo "<p>感谢收看-" . date("Y") .</p>";
?>
<html>
<body>
<h1>欢迎收看!</h1>
<?php include 'footer.php';?> //引用footer.php页脚文件
</body>
</html>
<?php
// include_once(): 仅允许加载一次
// 全局成员:函数, 常量, 类, 接口
// 不支持函数重载, 因此在同一个程序中不允许出现同名函数
// include 'footer.php';
// include 'footer.php';
include_once 'footer.php';
// include_once(): 加载前会检查该文件是否已经加载过了, 去重检查
include_once 'footer.php';
?>
1.2强制加载(require/require_once)
<?php
// 1. require: 强制加载
// 如果加载失败, 终止当前脚本, 与include不一样
require 'footer.php';
// 2. 强制去重加载
require_once 'footer.php';
require_once 'footer.php';
echo '如果看到我, 说明程序没有因文件加载失败而终止';
2.类与对象
对象:实际存在该类事物中每个实物的个体。$a =new User(); 实例化后的$a
引用:php的别名,两个不同的变量名字指向相同的内容
封装: 把对象的属性和方法组织在一个类(逻辑单元)里
继承:以原有的类为基础,创建一个新类,从而代码复用的目的;
多态:允许将子类类型的指针赋值给父类类型的指针。
<?php
class Person{
public $name;
public $age;
public $sex;
public function who()
{
echo $this->name." is ".$this->age." years old and is my ".$this->sex;
}
}
class man{
public $height;
public $where;
public function __construct($h,$w){
$this->height = $h;
$this->where = $w;
}
}
$luyaran = new Person();
$luyaran->name = "luyaran";
$luyaran->age = "27";
$luyaran->sex = "love";
$luyaran->who();
echo "<br>";
$man = new man($luyaran,'142');
echo serialize($luyaran);
$luyaran_arr = array('name'=>'luyaran','age'=>'27','sex'=>'love');
echo "<br>";
echo serialize($luyaran_arr);
echo "<br>";
var_dump($man);
echo "<br>";
echo serialize($man);
?>
结果:
总结下对象和类的概念以及之间的相互关系:
1.类是定义一系列属性和操作的模板,而对象,就是把属性进行实例化,完事交给类里面的方法,进行处理。
2.对象的本质,就是数据,其本身不包含方法,但是其内部有一个指针,会指向一个类,而在这个类里面,是可以包含方法的。
3.类里面的方法描述不同的属性,因而,会产生不同的表现或者结果。
4.类和对象是不可分割的,有对象,就必定有一个类是和它相对应的,但是,由标量进行强制转化而产生的对象由PHP中,一个称为“孤儿”的stdClass类,来收容它。
3.类属性、类常量简介
3.1类的变量成员叫做“属性”,或者叫“字段”、“特征”。属性声明是由关键字public、protected或private开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值必须是常数,常数是指PHP脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。
<?php
$name="php";
class A{
static $v="小张";
static public $v2 = <<<EOD
hello world
EOD;
static public $v3 = <<<'EOA'
$name
EOA;
var $var = 'a default value';
public function displayVar() {
echo $this->var.self::$v.$this::$v3;
}
}
$a=new A();
$a->displayVar();
?>
结果:a default value小张$name
3.2将在类中始终保持不变的值称为类常量,在定义常量时不需要使用$,而是在常量名前使用const关键字。常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。接口中也可以定义常量。
<?php
$name="php";
class A{
const cons=<<<EOD
hello 小张
EOD;
var $var = 'a default value';
public function displayVar() {
echo self::cons."\n".$this::cons."\n";
}
}
$a=new A();
$a->displayVar();
echo A::cons."\n";
$className="A";
echo $className::cons."\n";
?>
结果:hello 小张 hello 小张 hello 小张 hello 小张