目錄
回复内容:
首頁 後端開發 php教程 php命名空间 和 独立的模板引擎 的必要性 在哪里?

php命名空间 和 独立的模板引擎 的必要性 在哪里?

Jun 06, 2016 pm 08:49 PM
php

php引入命名空间用"\"分割的语法,算是独创,初用非常不习惯;且,用设计良好的目录结果来管理类,也能实现命名空间管理,个人认为新引入的namespace,used等都是画蛇添足,望指教交流。

再说模板引擎,个人认为模板引擎唯一用处在于:把写界面(模板)和写业务逻辑分离开,使的美工可以独立开发模板,以减少程序员的工作量。但对于美工来说,学习 类似{var}的模板标签,不亚于写php代码直接填充模板的难度;且非php语法的模板需要模板编译的过程,消耗性能。除此之外,想请问各种模板引擎的好处在哪里?

请不要简单的回答:“你的项目规模不够大,并行开发人员不够多”

回复内容:

php引入命名空间用"\"分割的语法,算是独创,初用非常不习惯;且,用设计良好的目录结果来管理类,也能实现命名空间管理,个人认为新引入的namespace,used等都是画蛇添足,望指教交流。

再说模板引擎,个人认为模板引擎唯一用处在于:把写界面(模板)和写业务逻辑分离开,使的美工可以独立开发模板,以减少程序员的工作量。但对于美工来说,学习 类似{var}的模板标签,不亚于写php代码直接填充模板的难度;且非php语法的模板需要模板编译的过程,消耗性能。除此之外,想请问各种模板引擎的好处在哪里?

请不要简单的回答:“你的项目规模不够大,并行开发人员不够多”

命名空间用得不多,跳过,就说说模板引擎吧。

关于模板引擎的使用,其实是回到最原始的需求:无非就是希望尽可能方便地输出html。

虽然php与其他很多语言不一样,它最初被设计出来的时候就是为了方便在一堆html里头实现一些动态特性(所以其实也有很多项目的确是用php来实现模板的,比如wordpress就是一堆php);但是和smarty(之类的模板引擎)比起来,在直接写html的时候,的确大多数时候还是smarty更方便,因为smarty引擎是针对编写html专门优化的。比如说在smarty里头需要将一个变量进行html转义:

<code>{$xxx|escape:'html'}
</code>
登入後複製

php呢?

<code><?php echo htmlspecialchars($xxx); ?>
</code>
登入後複製

如果改改成引号转义,smarty只需要把 html 改成 quotes 就行了,形式上保持了一致,在编写和阅读上都比较舒服。至于php,当然把 htmlspecialchars 改成 addslashes 也可以,但是php的函数,真的很难用(又难记又难写,很多类似的一组函数,变量的顺序也没有统一的约定,谁用谁恶心)……关于这一点我深有体会,10年的时候自己写的一个项目,觉得不是很有必要用smarty,于是自己用php来实现,写得非常痛苦,如果当时对smarty了解多一点(只是听说过,感觉好像比较重量级就没用),就绝对不可能出现这种情况。

最近webpy用的比较多,webpy的模板引擎我觉得比smarty用起来更爽的一点也在html转义:它默认就是转义的,需要在页面引用变量的时候,直接 $xxx 就行了。如果不需要转义也很简单: $:xxx

这些专门为了html开发而优化的特性,对于php这种一开始就很随意、以后也是很随意地乱堆起来的语言来说,的确是要好很多。

而关于编译、效率的问题:其实大多数模板引擎都是有编译缓存的,只是在第一次访问的时候需要编译,此后带来的开销几乎可以忽略不计。关于效率的问题,其实还可以顺便吐槽一下php——本来效率就不怎么样,这一点开销真的没什么。(p.s. 我快成php黑了)

use等等是命名空间的核心功能啊,显然,这是从C++等语言参考过来的。

命名空间的目的是为了加强标识符的管理,并非所有情况下都要使用非常长的完整限定名,所以要有use等机制来对标识符的命名空间部分进行简写。

当然,PHP的命名空间确实设计的不怎么样,比如奇葩的反斜杠,对函数和变量功能有限等等。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

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

See all articles