Time of Update: 2017-02-13
Data Access Objects(DAO) 對訪問儲存在不同資料庫管理系統(DBMS)中的資料提供了一個通用的API。 因此,在將底層 DBMS 更換為另一個時,無需修改使用了 DAO 訪問資料的代碼。 Yii DAO 基於 PHP Data Objects (PDO) 構建。它是一個為眾多流行的DBMS提供統一資料訪問的擴充,這些 DBMS 包括 MySQL, PostgreSQL 等等。因此,要使用 Yii DAO,PDO 擴充和特定的 PDO 資料庫驅動(例如 PDO_MYSQL)
Time of Update: 2017-02-13
當建立 HTML 表單時,經常我們發現我們在寫很多重複而且在不同項目中很難重用的視圖代碼。 例如,對於每個輸入框, 我們需要以一個文字標籤和顯示可能的驗證錯誤來關聯它。 為了改善這些代碼的重用性,我們可以使用自版本 1.1.0 可用的表單產生器特徵。1. 基本概念Yii 表單產生器使用 CForm 對象來代表描述一個HTML表單所需的內容,包括哪些資料模型關聯到此表單, 表單中有哪些輸入框,以及如何渲染整個表單。開發人員主要需要建立和配置這個 CForm
Time of Update: 2017-02-13
編寫 login 視圖是很簡單的,我們以一個 form 標記開始,它的 action 屬性應該是前面講述的 login 動作的URL。 然後我們需要為 LoginForm 類中聲明的屬性插入標籤和表單域。最後, 我們插入一個可由使用者點擊提交此表單的提交按鈕。所有這些都可以用純HTML程式碼完成。Yii 提供了幾個助手(helper)類簡化視圖編寫。例如, 要建立一個文本輸入欄位,我們可以調用 CHtml::textField(); 要建立一個下拉式清單,則調用
Time of Update: 2017-02-13
有了模型,我們就可以開始編寫用於操作此模型的邏輯了。 我們將此邏輯放在一個控制器的動作中。對登入表單的例子來講,相應的代碼就是:public function actionLogin(){ $model=new LoginForm; if(isset($_POST['LoginForm'])) { // 收集使用者輸入的資料 $model->attributes=$_POST['LoginForm'];
Time of Update: 2017-02-13
在編寫表單所需的 HTML 程式碼之前,我們應該先確定來自終端使用者輸入的資料的類型,以及這些資料應符合什麼樣的規則。 模型類可用於記錄這些資訊。 正如模型章節所定義的, 模型是儲存使用者輸入和驗證這些輸入的中心位置。取決於使用使用者所輸入資料的方式,我們可以建立兩種類型的模型。 如果使用者輸入被收集、使用然後丟棄,我們應該建立一個 表單模型; 如果使用者的輸入被收集後要儲存到資料庫,我們應使用一個 Active Record 。 兩種類型的模型共用同樣的基類 CModel
Time of Update: 2017-02-13
通過HTML表單收集使用者資料是Web程式開發的主要工作之一。除了表單設計外, 開發人員還需要將現存的或預設的資料填充到表單,驗證使用者輸入, 對無效的輸入顯示適當的錯誤資訊,儲存輸入到持久性儲存空間。Yii通過其 MVC 結構極大地簡化了此工作流程。在 Yii
Time of Update: 2017-02-13
儘管模型——視圖——控制器 (MVC) 被幾乎每一個Web開發人員所熟知,但是在實際應用開發中如何合理使用MVC依然困擾著許多人。MC背後的核心思想是代碼的可重用性以及邏輯與視圖的分離。 在本節中, 我們將會講述在使用Yii架構的過程中如何更好的使用MVC開發應用。為了更好進行解釋闡述,我們假設Web應用程式套件含了如下的一些子應用:前端:
Time of Update: 2017-02-13
介紹過 Yii 中的基本概念之後,我們現在講解使用 Yii 開發Web應用時的一般開發流程。 此處的開發流程假設我們已經完成了對應用的需求分析和必要的設計分析。建立目錄結構骨架。建立第一個Web應用 中講到的 yiic工具可以快速實現此步驟。配置此 應用。這是通過修改應用設定檔實現的。 此步驟可能也需要編寫一些應用組件(例如使用者組件)。為所管理的每個類型的資料建立一個 模型 類。 Creating First Yii Application 和 Automatic Code
Time of Update: 2017-02-11
Yii 應用建立於組件之上。組件是 CComponent 或其子類的執行個體。使用組件主要涉及訪問它的屬性以及觸發或處理它的時間。 基類 CComponent 指定了如何定義屬性和事件。1. 組件屬性組件的屬性就像對象的公用成員變數。它是可讀寫的。例如:$width=$component->textWidth; // 擷取 textWidth 屬性$component->enableCaching=true; // 設定 enableCaching
Time of Update: 2017-02-10
這篇文章主要介紹了PHP實現移除數組中為空白或為某值元素的方法,涉及php使用array_filter過濾數組的相關操作技巧,需要的朋友可以參考下本文執行個體講述了PHP實現移除數組中為空白或為某值元素的方法。分享給大家供大家參考,具體如下:在實現移除數組中項目為空白的元素或為某值的元素時用到了兩個函數 array_filter、create_function先看一個執行個體:$array = Array ( [0] => 1 ,[1] => 2, [2] => 3, [3]
Time of Update: 2017-02-10
本文介紹了PHP開發中遇到的數組問題,小編在這裡給大家總結了5中方法關於php判斷數組是否為空白問題,需要的朋友參考下本文介紹了PHP開發中遇到的數組問題,這裡介紹了判斷PHP數組為空白的5種方法,有需要的朋友可以借鑒參考一下。1. isset功能:判斷變數是否被初始化說明:它並不會判斷變數是否為空白,並且可以用來判斷數組中元素是否被定義過注意:當使用isset來判斷數組元素是否被初始化過時,它的效率比array_key_exists高4倍左右<?php$a =
Time of Update: 2017-02-10
本文介紹了PHP圖片裁剪與縮放樣本,廢話不多少,具體代碼如下:/* *exif_imagetype -- 判斷一個映像的類型 *功能說明:函數功能是把一個映像裁剪為任意大小的映像,並保持映像不變形 *參數說明:輸入 需要處理圖片的 檔案名稱,產生新圖片的儲存檔案名稱,產生新圖片的寬,產生新圖片的高 */ // 獲得任意大小映像,不足地方展開,不產生變形,不留下空白 function image_resize($src_file, $dst_file, $new_width,
Time of Update: 2017-02-10
平時開發中經常會遇到抓取某個頁面內容, 但是有時候某些頁面需要登陸才能訪問, 最常見的就是論壇, 這時候我們需要來使用curl類比登陸。 大致思路:需要先請求提取 cookies 並儲存,然後利用儲存下來的這個cookies再次發送請求來擷取頁面內容,下面我們直接上代碼<?php/** * @Brief PHP讀取Curl類比登陸, 擷取cookie, 帶cookie進行請求 * @Date: 2016/7/2 * @Time: 9:41
Time of Update: 2017-02-10
p>PHP使用CURL上傳檔案只需發送一個POST請求就可以了,在請求中設定某個欄位為需要上傳的檔案全路徑,並且以“@”開頭,然後使用CURL把該變數以POST方式發送到伺服器,在服務端即可以從超級全域變數$_FILES中取到相應的上傳檔案資訊。下面我們以一個例子來展示這個過程。假設本地有一個文字檔log.txt,其路徑為“/www/test/log.txt”,內容如下:this is a file for testhello
Time of Update: 2017-02-10
設定宿主環境現在你已經瞭解了PHPAPI的世界, 並可以使用zval以及語言內部擴充機制執行很多工作了, 是時候轉移目標用它做它最擅長的事情了: 解釋指令碼代碼.嵌入式SAPI回顧介紹中, php構建了一個層級系統. 最高層是提供使用者空間函數和類庫的所有擴充. 同時, 其下是服務API(SAPI)層, 它扮演了webserver(比如apache, iis以及命令列介面cli)的介面.在這許多sapi實現中有一個特殊的sapi就是嵌入式sapi. 當這個sapi實現被構建時,
Time of Update: 2017-02-09
傳回值使用者空間函數利用return關鍵字向它的調用空間回傳資訊, 這一點和C語言的文法相同.例如:function sample_long() { return 42; } $bar = sample_long();當sample_long()被調用時, 返回42並設定到$bar變數中. 在C語言中的等價代碼如下:int sample_long(void) { return 42; } void main(void) { int bar = sample_long()
Time of Update: 2017-02-09
你的第一個擴充每一個php擴充的構建至少需要兩個檔案: 一個configuration檔案, 它告訴編譯期要構建哪些檔案以及需要什麼外部的庫, 還需要至少一個源檔案, 它執行實際的工作.剖析擴充實際上, 通常會有第二個或第三個設定檔, 以及一個或多個標頭檔. 對於你的第一個擴充, 你需要添加每種類型的一個檔案並使用它們工作.設定檔要開始了, 首先在你的php原始碼分類樹的ext/目錄下建立名為sample的目錄. 實際上這個新的目錄可以放在任何地方,
Time of Update: 2017-02-09
變數的裡裡外外每種程式設計語言共有的一個特性是儲存和取回資訊; php也不例外. 雖然許多語言要求所有的變數都要在使用之前被定義, 並且它們的類型資訊是固定的, 然而php允許程式員在使用的時候建立變數, 並且可以儲存任意類型語言能夠表達的資訊. 並且還可以在需要的時候自動的轉換變數類型.因為你已經使用過使用者空間的php, 因此你應該知道這個概念是"弱類型". 本章, 你將看到這些資訊在php的父語言----c(C的類型是嚴格的)中是怎樣編碼的.當然,
Time of Update: 2017-02-09
在Redis中我們經常用到set,get等命令,細心的你有沒有發現,還有幾個相似的命令叫setbit,getbit,它們是用來幹嘛的?BitMap是什麼就是通過一個bit位來表示某個元素對應的值或者狀態,其中的key就是對應元素本身。我們知道8個bit可以組成一個Byte,所以bitmap本身會極大的節省儲存空間。Redis中的BitMapRedis從2.2.0版本開始新增了setbit,getbit,bitcount等幾個bitmap相關命令。雖然是新命令,但是並沒有新增新的資料類型,因為se
Time of Update: 2017-02-09
PHP執行原理php是一門應用非常簡單,開發效率極高的一門語言,其弱類型的變數能省去程式員大量的定義變數、類型轉換等的時間和精力。它是一種適用於web開發的動態語言。1. php設計的原理和特點多進程模型:這樣能做到進程間互相不受影響,對於進程的資源利用更快速、便捷弱類型語言:和強型別語言C、C++、java等語言不同,php中變數的類型並不是一開始就確定的,他是在運行時才確定的,可以隱式或顯式的對其進行類型轉換,這就使其在開發中非常的靈活,程式員無需關注變數類型的問題Zend引擎+