PHP学习笔记5:代码重用和函数
读《PHP和MySQL Web开发》笔记合集:
1、 代码重用的好处
成本、可靠性、一致性
注意:只要原来的代码是模块化的而且编写良好,那么重复使用代码还会节省很多工作。在工作时,可以试着辨认一下今后可能再次要调用的代码段。
2、 require() 与被包含代码执行问题
如果希望一个被包含文件中的PHP代码能够被当成PH代码进行处理,必须将PHP代码放到PHP标记之间(不管被包含代码的文件是什么后缀,jpg、rar后缀都无所谓,只要里边的php代码是放在php标签里的,被包含后都能执行)
但是文件后缀,会影响浏览器访问该文件时是否直接载入,并以普通文本的形式查看源代码。
所以, 为了安全,请将被包含文件保存在文档树之外,或者使用标准的文件扩展名
例子:
3、如果 被包含文件不存在的话, require会给一个致命错误,而include 只会给一个警告。
还有两个变体, require_once() ,include_once() 确保一个被包含的文件,只能被引入一次。
注意:当引入函数库时,这两个函数才非常有用,使用这两个函数可以防止错误的引入同样的函数库两次,从而出现重复定义的错误。如果关心编码实践,可以考虑使用require() 和include() ,因为它们的运行速度较快。
通过require() 调用外部文件的时候,文件的名称并不会影响对它们的处理
4、即使php后缀的,文件,如果写HTML代码,直接访问,还是当做html被解析处理的
注意: 如果 希望保证一个文件被当做纯文本或HTML,而且不会执行任何PHP ,可以使用 readfile() 作为替代方法。这个函数将回显文件内容,不会对其进行解析。如果使用的是用户提供的文本,这可能就是一个重要的安全问题。
5、一个好的静态页面模板
例子:
...
...
...
....
...
6、希望将页眉和脚注加入到每个页面中
1)配置 php.ini
auto_prepend_file
auto_append_file
windows例子如下:
auto_prepend_file = “c:/Program Files/Apache Software Froundation/Apache2.2/include/header.php”
auto_append_file = “c:/Program Files/Apache Froup/Apache2/include/footer.php”
UNIX例子如下:
auto_prepend_file = “/home/username/include/header.php”
auto_append_file = “/home/username/include/footer.php”
注意:如果使用了这些指令,就不需要再输入include() 语句,但页眉和页脚在页面中不再是页面的可选内容了2)Apache Web下, 每个目录配置 .htaccess
这个文件需要包含如下两行代码:
php_value auto_prepend_file = “/home/username/include/header.php”
php_value auto_append_file = “/home/username/include/footer.php”
注意:其语法与php.ini中有所不同,没有等号,但很多php.ini中的设定也可以按照这种方法修改。注意:在.htaccess 中设置选项,有极大的灵活性。可以在一台只影响你的目录的共享主机上进行,不需要重启服务器,也不需要管理员全下。
缺点是,使用.htaccess 的目录中每个被读取和被解析的文件每次都要进行处理,而不是只在启用时处理一次。
7、函数中可选参数的问题
首先注意,PHP里函数名不区分大小写,变量名区分,而JavaScript是都区分。
比如一个函数原型:
resource fopen( string filename, string mode [, bool use_include_path [, resource content]] )
详细解释:
"resource" 告诉我们该函数会返回一个资源,fopen()函数中,函数原型中共给出了4个参数。[] 刚括号指明了这个参数是可选的,可以忽略它们,如果忽略它们,它们会使用默认只。
请注意:一个具有多个可选值的函数,必须给可选参数从左到右赋值。比如,可以不给出 content 参数,或者可以不提供use_include_path 和 content 参数,但是不能不提供use_include_path ,而只给出content参数。
测试:
例子2:注意了哈,还有一个说法是,说php只传递值。
16依次赋给了第3个参数c。
8、调用未定义的函数
Fatal error: Call to undefined function tests1() in D:\wamp\www\study\fuc.php on line 10
注意:通常PHP给出的错误信息是非常有用的,它告诉我们错误出现在哪个文件中,哪一行,以及我们调用的函数名称。
如果看到这个信息,有3个可能:
1)函数名称的拼写是否正确;
2)这个函数是否存在于所有的PHP版本中;
3)所调用的函数是否是PHP扩展的一部分,而该部分并没有被载入。
9、函数的基本结构
1)函数命名有如下几个限制
函数名称不能喝已有函数重名(许多语言允许重复使用函数名称,叫“重载”,PHP不支持函数重载);
函数名称只能包含字母、数字和下划线且不能以数字开始。
注意:
$name 并不是一个函数的合法名称,但类似于$name(); 的函数调用,也可以正确地执行 ,这是根据$name 的值来确定的。PHP可以取出保存在$name 中的值,寻找具有那个名称的函数,并且调用该函数。这种函数类型被称为 可变函数,而且有时候是有用的。
2)在{} 花括号中,可以包含在PHP 脚本的其他地方都合法的代码,其中包括函数调用、新的变量或函数声明、require()或include() 语句类声明以及HTML代码。
如果希望在一个函数中退出PHP 并输入 HTML脚本,可以像在脚本其他地方做的那样,使用一个风的PHP标记,然后再编写HTML。例子:
function my_function() {
?>
My function was called
}
?>
10、 3个帮助器函数,确定传递进来的参数情况
func_num_args():返回传入的参数个数
func_get_arg():一次获得一个参数
func_get_args():返回参数的数组
11、理解作用域
1)函数内局部变量和函数外全局变量,可以变量名相同,不冲突,懂。
2)有所谓的“超级全局变量”
3)global 可手动指定函数中的变量具有全局作用域。
4)调用 unset($variable_name) 可以手动删除变量,如果变量被删除,它就不再参数所指定的作用域中了。
例子:
因为$var 并没有被赋值。
建议:避免函数内外使用同一个变量名。
12、参数的引用传递和值传递
值传递:
function increment( $value, $amount = 1)
{...}
引用传递:
function increment(& $value, $amount = 1)
{...}
引用传递,能改变原值。
13、return
当一个函数的执行结束时,要么是因为所有命令都执行完了,要么就是使用了“return”,return可以不返回值,但是建议返回。
14、递归
PHP支持递归函数,递归函数就是函数调用自己本身。这些函数特别适用于浏览动态数据结构,例如连接列表和树。
但是,几乎没有基于Web的应用程序要求使用如此负责的数据结构。在很多情况下,递归可以用来取代循环,因为二者都是重复做一些事情。递归函数比循环慢而且要占用更多内存,所以应该尽可能多用些循环。
function reverse_r($str) { if (strlen($str)>0) reverse_r(substr($str, 1)); echo substr($str, 0, 1); return; } function reverse_i($str) { for ($i=1; $i { echo substr($str, -$i, 1); } return; } reverse_r('Hello'); echo ' reverse_i('Hello'); ?> |
虽然递归看上去更美观,但一定要给出终止条件,否则将导致服务器内存耗尽,或者达到了最大调用次数。
15、命名空间 (又叫名称空间,namespace)
通常,命名空间是一个抽象的容器,它可以包含一组标识符;
PHP中,命名空间可以包含你所定义的函数、常量和类。
从结构角度看,为自定义函数和类定义命名空间的有点:
1)一个命名空间中的所有函数、类和常量都将冠以名称空间前缀。
2)非全路径的类、函数和常量名称将在运行时解析,在查看全局空间之前,将首先查看命名空间。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。
