一、include
include、include_once、require、require_once
①、require和include之间有两点重要的区别
无论require的位置如何,指定文件都将包含到出现require的脚本中。
例如,即使require放在计算结果为假的if语句中,依然会包含指定文件。
require出错时,脚本将停止运行,而在使用include的情况下,脚本将继续执行。
②、include_once、require_once函数确保文件只包含一次
后面再试图包含相同的文件时将被忽略。
二、final
①、如果我们希望某个不被其它类继承(可能出于安全考虑),可以使用 final
②、如果我们希望某个方法,比如计算个人所得税的方法,不能被子类改写,可以使用 final 来修饰该方法
final public function 方法名
③、final 关键字不能去修饰属性
三、buffer
(1)、什么是 buffer
buffer 其实就是缓冲区,一个内存地址空间,主要用于存储数据区域。
①、操作系统 buffer
当我们往一个文件写入文字的时候,操作系统不是直接把文字写入文件的,而是把内容写入buffer,当 buffer 写满之后,操作系统会把文字写入磁盘。
②、php 中的 buffer
执行一个语句,先到缓存区。当一个缓存区满了,脚本进程就会把 php buffer 中的数据通过 tcp 传给浏览器。
(2)、php.ini 中的 php buffer(默认开启)
php.ini中output_buffering = 4096
echo 1;
//输出缓存区中的内容
echo ob_get_contents();
输出结果:11
关闭php buffer,将php.ini中output_buffering = 4096注释,重启服务器。
输出结果:1
(3)、OB 函数
ob_start 打开输出控制缓冲
ob_get_conents 返回输出缓冲区内容
ob_clean 清空(擦除)缓冲区
ob_get_clean 得到当前缓冲区的内容并删除
四、break和continue
break可以终止循环。
continue没有break强大,只能终止本次循环而进入到下一次循环中。
五、const 常量
①、使用情景
当有一个属性,不希望被修改,则考虑使用 const 常量
②、基本用法
—— const 常量名 = 值;
访问 —— 类内部:类名/self::常量名;类外部:类名::常量名
③、细节讨论
(1)常量名应全部大写,并且前民不要有 $
(2)常量在定义的时候就需要赋值了,之后就不能在其他地方修改了
(3)常量的默认访问修饰符是 public ,但是前面不加访问修饰符
六、define
①、类型
const是一个语言结构;而define是一个函数,可以通过第三个参数来指定是否区分大小写。true表示大小写不敏感,默认为false define('PI', 3.14, true);
②、速度
const简单易读,编译时要比define快很多。
③、调用
A、类
const可在类中使用,用于类成员常量定义,定义后不可修改;define不能在类中使用,可用于全局变量
class MyClass
{
const CONS = '常量值';
function showConstant() {
echo self::CONS . PHP_EOL;
echo constant('CONS');
}
}
B、函数
const是在编译时定义,因此必须处于最顶端的作用区域,不能在函数,循环及if条件中使用;而define是函数,也就是能调用函数的地方都可以使用
if (...){
const FOO = 'BAR'; // 无效的invalid
}
if (...) {
define('FOO', 'BAR'); // 有效的valid
}
④、key 和 value
A、key
const只能用普通的常量名,define常量名中可以有表达式
const FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
define('BIT_' . $i, 1 << $i);
}
B、value
const定义的常量只能是静态常量,define可以是任意表达式
const BIT_5 = 1 << 5; // valid since PHP 5.6
define('BIT_5', 1 << 5); // 有效的valid
七、数据类型
php 支持 8 种原始数据类型。
四种标量类型(布尔型boolean,整型interger,浮点型float/double , 字符串string)
两种复合类型(数组array , 对象object)
两种特殊类型(资源resource,NULL)
八、循环语句
while(){};
do{}whlie();
for(){};
foreach(){};