php高級分離術,php 分割

本文目錄一覽:

模板和PHP分離技術到底好在哪裡?我並不覺得方便,有點疑惑。

如果是小型項目,技術和美工是一個人來完成的那麼是不需要模板引擎的,因為這時候使用模板引擎純粹是浪費時間,給自己找不痛快,並且還影響程序的執行速度。如果是大型項目的話,程序員有很多,美工也有很多,程序員看見前台代碼就頭暈,美工看見程序代碼就頭疼的話請問你怎麼讓項目繼續下去?這時候後台程序和前台分離是最好的選擇。

php實現代碼分離,用什麼框架?

一個優秀的WEB架構,必定會應用一些分層設計的思想,這樣可以讓系統開發起來更靈活,同時後期維護也比較方便。本文作者麥舒設計了一個前端與後端分離的架構,原文分享如下:

看了《系統架構:Web應用架構的新趨勢—前端和後端分離的一點想法》 這篇文章,對前端與後端的分離非常認同,這樣做對於系統的維護是有相當大的好處的。正好自己也設計了一個這樣的系統,於是把它拿出來,和大家討論一下。這個架構,與其說是想出來,還不如說是我做系統總結出來的最佳實踐。

我們做的系統,前端的頁面基本都是使用 JavaScript 的富戶端頁面,主要應用的框架用,jquery、jquery ui、knockout js、Durandal、另外,還有自己封裝的一些 UI 組件,後端的主要採用到的技術有 OData、MVC、Linq to SQL 以及自己寫的一個許可權管理組件,資料庫採用的是 SQL Server 2005。

下面向大家介紹一下各模塊的功能以及其劃分的目的,我們先從用戶界面看起吧

一、關於前端的 dataProvider

簡單點說,就是一個給界面調用的數據訪問層,很多人都人這樣的疑問,在這裡加一個數據訪問層,是不是多餘?只要你做的前端,你都會碰到下面這些問題:

1、一個產品或者項目,前端與後端是同時進行了,這時候,根本沒有後端的介面,甚至可以說,連個介面的定義都沒有。作為前端開發人員,你如何去開展自己的工作?

2、作為前端開發人員,你有沒有碰到,因為後端的介面掛掉,導致你的工作沒法繼續做下去的情形?

3、作為前端開發人員,往往免不了要和第三方的介面進行對接,你有沒有碰到過,和你做對接的人員,突然因為項目緊,被抽走了,留給你的只有一堆需要傳N個參數,傳了後接著出「對象為空」的異常呢?你根本不知道哪裡參數傳錯了。面對這些介面,你除了破口大罵,得不到任何幫助。

4、作為前端開發人員,你有沒有試過,你向後端的開發組,要一個介面,他們需要討論個幾天,然後再花幾天才能給你,給你之後,還不能用,又得再花幾天時間調試呢?

如果你向我一樣,都曾經都碰過這些問題,你就不會懷疑這個 dataProvider 存在的必要了,有了這個 dataProvider,可以最大減少後端介面對前端開發的影響。下面是一個 dataProvider 的實例:

var dataProvider = (function () {

var fakeProvider = {

countries: new Countries()

};

var realProvider = {

countries: new JData.WebDataSource()

};

//下面的介面,根據情況二選一

return fakeProvider; //這個是假的 dataProvider,從本地讀

return realProvider; //這個是真正 dataProvider,從介面讀

})();

從上面可以看出來,這個 dataProvider 使用了工廠模式來創建,它有兩個實例,fakeProvider和realProvider,fakeProvider是用來提供一些模擬數據,而realProvider提供從介面讀取出來的數據。當沒有介面,或者介面掛掉,我們可以先從 fakeProvider 來讀取數據。等介面好了,切換到 realProvider 。

二、關於用戶界面輸入的驗證

1、數據的驗證。用戶在界面輸入數據後,接著調用 dataProvider 里的介面對數據進行處理,但是在向服務端提交之前,得先對數據進行驗證。那個這個驗證如何進行呢?dataProvider先從服務端獲實體的描述信息,這些描述包括但不限於:主外鍵、屬性的驗證信息(比如是否可空),當然,這個實體信息是可以緩存起來,以便重用的。然後 dataProvider 再根據這個描述信息來對數據進行驗證。

2、錯誤信息的顯示

當驗證到某一個屬性不合法,驗證信息的模塊就在頁面查找出對應輸入控制項,它是怎麼查找的呢?比如說,Contry 的 Name 輸入為空是不可以的。那它就先查找 id 為Coutry的元素,然後再Coutry元素下面再找id 或者 name 為 Name 的控制項,如果找不到則直接彈窗顯示錯誤信息。例如:

form id=”Country”

input name=”Name”/

/form

三、關於後端使用 OData

1、作為後端開發人員,你有沒有碰到過這種前端開發人員,今天讓你加一個欄位,好,加了,然後打包發布。明天又讓你加一個欄位。後天突然又說,前兩天加的欄位,不需要,你會不會有種想喊「操」的衝動?

2、作為後端開發員員,你有沒有碰到過這種前端開發人員,今天跟你說介面不夠用,要加個 GetUserByName 的方法,明天又說,還得加個 GetUserByEmail 的方法?然後,過了一段時間,你發現介面越來越多,維護的模塊越來越癰腫,並且這些介面,你只敢加,不敢刪除。因為,你根本不知道這些,有哪個不用的,你跑去問前端,他也回答不出來。所以一些介面哪怕是沒用的,也只能永遠系統里,直到它生命周期的結束。

如果你也碰到類似於我這種煩惱,使用 OData 也許是一個不錯的選擇,把查詢的許可權都開發給前端的開發人員,他愛怎麼查就怎麼查,都由它去。

四、關於後端使用MVC

我們的系統,使用MVC都是用來處理從前端提交上來的數據的,使用它主要是開發人員都熟悉MVC,然後MVC再調用業務層代碼,同時,還需要處理:

1、對提交上來的數據進行驗證

2、處理系統的異常,包括對異常進行重新的包裝,再傳回到客戶端,以便於客戶端的處理。對異常的信息進行記錄。

五、數據訪問層

關於數據訪問層,在我們的系統里實際是一個 ORM 的包裝器(ORM Wrapper),你在對 ORM 裹上一層外衣。目的在於:

1、對數據進行攔截。例如:有些數據,只對某個角色的開發。數據訪問層需要對根據過濾條件,然後再結合查詢條件,重新生成SQL。

2、對數據假刪除的處理。見過很多系統,都是把刪除放到業務層來進行的,其實這是不適合的,從業務的角度來說,關心的是刪除,在執行刪除後,這條數據從我眼前消失就可以了。至真刪除還是假刪除,這與我無關。數據訪問層,要做的就是這工作,它可以數據在真刪除與假刪除之間進行切換,只要配置一下,就可以把真刪除變成假刪除(其實就是把Delete操作變成Update操作),使得進行業務開發人員,不用再關心數據的真假刪除。

3、對數據進行跟蹤、備份。你肯定碰到過這麼一種需要,需要記下來,每一次的更新操作的時間,以及更新了些什麼內容。對於刪除的數據,能夠把它還原回來。數據訪問層,通過對 ORM進行包裝,完全可以記錄下每一次更新、刪除這些操作,然後記錄下來即可。當然,這些需求利用數據提供的功能也是可以實現的,不在討論的範圍內。

php工程師 需要具備哪些技術

作為一名PHP工程師,你不僅需要精通PHP開發,資料庫設計建模,伺服器架構,還需要熟悉各種系統結構,如文章系統、圖片系統、人力資源管理系統、樓市系統、電子商務系統、廣告公告系統、流量統計系統、企業自動建站系統、留言問答系統、BBS、博客等,最重要的工程要有一定的項目實戰經驗。 1、熟練使用PHP+MYSQL編程,熟悉HTML , Div, CSS, JavaScript, Smarty模板技術;常用設計模式必須掌握,設計模式是前輩的總結、經驗; 2、、熟悉主流PHP框架,熟悉網站開發的流程; 3、有良好的編程習慣,良好的溝通能力,具有較強的分析、解決問題能力;能自主完成模塊開發; 4、html/css必須會,不要求你會切會div+css,但是至少要知道,因為php是一種嵌入html中使用的語言; 5、熟悉Linux 開發環境;linux不需要會,會的話肯定更好,一般公司都有專門伺服器管理人員的。

像我們諾博源畢業的PHP學員各方面的能力都非常的優秀 ,所以一畢業就能找到合適的好企業上班

phpcms模板分離技術

自己開發的,和 smarty沒有關係,

可能你看到 {$CATEGORY[$catid][url]} 感覺和smarty很像,

只是他們使用的方式類似,但並不是用的smarty

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/186181.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 05:44
下一篇 2024-11-27 05:44

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python元祖排序:從基礎知識到高級應用

    Python元祖是一種不可變序列,通常用於將一組數據綁定在一起。元祖之間經常需要排序,本文將從基礎知識到高級應用,為你詳細講解Python元祖排序。 一、排序方法 Python提供…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • Isodata演算法算高級演算法嗎?

    是的,Isodata演算法算得上是一種高級演算法。 一、Isodata演算法的定義 Isodata演算法是一種基於聚類的圖像分割演算法,廣泛應用於圖像處理領域。 該演算法首先對圖像進行預處理,…

    編程 2025-04-27
  • Python高級用法:re.split函數雙空格

    本文將詳細介紹Python中re模塊中的split函數雙空格的用法及其應用場景。 一、split函數雙空格概述 re.split() 是 Python re(正則表達式) 模塊中的…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台伺服器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24

發表回復

登錄後才能評論