require 和 include
到目前为止,我们为所有测试只创建了一个 PHP
文件。
创建应用程序时,情况几乎总是相反。很快我们就需要将代码拆分/组织到多个文件中。
在这里,我们将看到两条指令,它们允许你执行已在另一个文件中定义的代码。
为此,我们将创建两个文件。第一个文件名为 message.php
,并写入以下代码
1 |
|
这是简单的代码。一个显示消息和换行符的小函数。
然后,创建第二个名为 index.php
的文件并写入以下代码
1 | <html lang="en"> |
在这个例子中,我们发现了 require
指令。它允许包含 message.php
文件的代码。因此允许使用函数 sendMessage()
如果指定为参数的文件不存在会发生什么?在这种情况下,PHP
将返回错误。
include 指令
允许你执行与 require
指令完全相同的操作,只是如果要包含的文件不存在,PHP 将不会返回错误(仅返回警告)。
require_once 和 include_once
这些指令与它们的姊妹函数(require
和 include
)相同。不同之处在于,PHP
仅在文件尚未包含时才会包含该文件。
文件和文件夹的操作
PHP
包含几个函数来操作服务器上的文件夹和文件
这里有一些非常有用的函数
创建文件
1 | file_put_contents("test.txt", "Hello World!"); |
此函数将创建 test.txt
文件(在当前文件夹中),内容为“Hello World”。
可以指定文件夹。
1 | file_put_contents("data/test.txt", "Hello World!"); |
如果文件夹不存在,PHP
将返回警告
你可以使用 mkdir
函数创建文件夹
1 | mkdir('data'); |
请注意,要删除文件夹,你可以使用 rmdir()
函数。文件夹必须为空才能删除。
如果你想在当前文件夹的父文件夹中创建文件,请使用双点 ../
。
1 | file_put_contents("../test.txt", "Hello World!"); |
该文件将在父文件夹中创建
如果文件已存在,file_put_contents
函数将替换现有文件。如果你的目标是附加到现有文件,请使用 FILE_APPEND
选项
1 | file_put_contents("test.txt", "Hello World!", FILE_APPEND); |
读文件
1 | $content = file_get_contents("test.txt"); |
如果文件不存在,PHP
将返回警告
要检查文件是否存在,你可以使用 file_exists()
函数
1 | if (file_exists('/posts/first.txt')) { |
逐行读取文件
上一个函数允许一次读取一个文件。有一个函数可以逐行读取。
1 | $file = fopen("test.txt", "r"); |
这里使用 r
选项打开文件进行读取。
代码块将运行,直到检测到文件末尾 feof()
逐行写入文件
1 | $file = fopen('export.csv', 'w'); |
这里使用 w
选项打开文件以创建或覆盖。如果我们想添加内容,可以使用选项 a
来添加
打开文件后,你可以插入行
1 | $array = [ |
fputfile()
函数允许写入行。在这里,我们使用的是它的姊妹函数 fputcsv()
,它本质上执行相同的操作,但采用 csv
格式。
请注意,我们在循环之前使用了 fputcsv
。此行将是文件的第一行,应包含列名。array_keys()
函数允许你检索数组键的名称(名称和年龄)
枚举
枚举可以定义个性化的“类型”,该类型将限制为指定值中的可能值之一。枚举是一种对象类型,因此可以在任何可以使用对象的地方使用。
这是一个示例语句
1 | // Définir le nom et les valeurs posssible |
此声明创建了一个只能有三个值的 InvoiceStatus
类型
InvoiceStatus::Sent
InvoiceStatus::Paid
InvoiceStatus::Cancel
可以在带有类型提示的函数中使用此类型
1 | function printInvoiceStatus(InvoiceStatus $status) |
name
属性用于检索案例的名称
可以为每个“案例”关联一个值。为此,在声明枚举时必须指定枚举的类型:例如枚举 InvoiceStatus : int
还可以向我们的枚举添加方法
1 | enum InvoiceStatus : int |
value
属性允许你检索与 case
关联的值
就像对象一样,可以向 Enum
添加方法
1 | enum InvoiceStatus : int |
该方法可以通过关键字 self::
访问枚举的 case
最后,每个值都可以调用 ex
函数。InvoiceStatus→text()
相关文章: