1.include与require的区别与联系
1.
include
和require
都是在当前文件调用外部文件,且作用域即当前文件的作用域
2.require
语句调用文件时,如果没有找到文件,require
语句会输出错误信息,并且立即终止脚本的处理,而include
语句在没有找到文件时则会输出警告,不会终止脚本的处理
3.使用require
语句调用文件时,只要程序一执行,就会立刻调用外部文件,而通过include
语句调用外部文件时,只有当程序执行到这条语句时,才会调用外部文件
例如:
<?php
// 当xxx.php文件不存在时,会输出错误信息,但依然会执行输出Hello World
// 文件初始化时就调用了外部文件
include 'xxx.php';
echo 'Hello World';
// 当xxx.php文件不存在时,会输出错误信息且终止脚本处理,不会输出Hello World
// 文件初始化时未调用外部文件,执行require语句时才会调用
require 'xxx.php';
echo 'Hello World';
?>
2.类与对象的常用关键字及操作
<?php
namespace _0812;
// 声明类
class User
{
// 1.公共属性
public $userName;
public $sex;
// 2.私有属性
private $salary;
private $age;
// 3.静态属性
public static $nation;
// 4.获取器: __get(属性) 魔术方法
// $name: 要获取的属性名
public function __get($name)
{
// 当获取的属性为年龄变量时 对私有变量$age进行+10操作
// 类的内部,用$this来直接使用变量属性,不用实例化
// 对私有属性判断,返回一个虚假年龄
return $name === 'age' ? $this->$name + 10 : $this->$name;
}
// 5.更新器/设置器 __set(属性,值) 魔术方法
// 私有属性可以通过更新器动态更新
// 在属性动态更新时,对属性进行更新操作判断,是否对其进行更新
public function __set($name, $value)
{
// 对真实的年龄作判断
if ($name === 'age') {
if ($value >= 18 && $value <= 50) {
$this->$name = $value;
} else {
echo '年龄越界了';
}
}
}
// 6.构造方法:魔术方法
// 在实例化该类时自动触发 初始化类的属性
// 公共属性可以通过构函数来动态更新
// $nation设置默认值
public function __construct($userName, $sex, $salary, $nation = 'China')
{
// 初始化公共属性
$this->userName = $userName;
$this->sex = $sex;
// 初始化私有属性
$this->salary = $salary;
// 初始化静态属性
self::$nation = $nation;
}
// 7.静态方法 实例化时传入当前对象
public static function hello($user)
{
// 在静态方法中调用类的属性时 必须实例化才可以调用
// $user = new User('张三', 1800,);
return 'Hello ' . $user->userName . ', 你的国籍是: ' . self::$nation;
}
}
// 8.实例化 在类的外部使用类的属性需要实例化,用对象访问成员
// 实例化时没有初始化$nation时使用默认值
$user1 = new User('赵大', '男', 2800);
// 9.访问公共成员
echo $user1->userName . '<br>';
// 10.访问私有成员
echo $user1->salary . '<br>';
// 11.访问静态成员 实例化未初始化$nation 输出默认值
echo User::$nation . '<br>';
// 12.访问静态成员 实例化初始化$nation
$user2 = new User('赵大', '男', 2800, '中国');
echo User::$nation . '<br>';
// 13.访问静态方法
echo User::hello($user2) . '<br>';
// 14.更新成员
$user2->age = 38;
echo $user2->age . '<br>';
// 私有属性若是通过构造函数初始化值时,更新器对私有属性更新时无效
$user2->salary = 3000;
// 输出结果依然是实例化时的初始值 2800
echo $user2->salary . '<br>';
// 15.访问私有属性$age时,对$age判断,并返回虚假年龄
// 真实年龄 28
$user2->age = 28;
// 输出虚假年龄 38
echo '虚假年龄:' . $user2->age . '<br>';
// 16.更新$age时对其进行操作判断
// 真实年龄 52
$user2->age = 52;
echo '<br>';
// 打印对象
var_dump($user2);