PHP 第1章 基础知识 PHP 第1章 基础知识

2022-07-14

一、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(){};

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

阅读 717