亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 後端開發(fā) php教程 PHP開發(fā)框架Yii Framework教學(xué)(8) 使用FormModel

PHP開發(fā)框架Yii Framework教學(xué)(8) 使用FormModel

Jan 21, 2017 am 09:54 AM

透過前面的學(xué)習(xí),我們了解了Yii Web應(yīng)用的基本組成部分,也會編寫像Hangman猜單字遊戲這樣簡單的應(yīng)用。在第一個例子Yii Framework 開發(fā)簡明教程(1) 第一個應(yīng)用Hello World 我們介紹了Yii Web應(yīng)用採用MVC模型,也說明了本教程目的是透過不同的視角(主要是透過開發(fā)Windows應(yīng)用C++,C#程式設(shè)計師的角度)幫助Windows桌面應(yīng)用程式或ASP.Net程式設(shè)計師較快的掌握PHP?Yii Framework應(yīng)用程式框架。

前面我們介紹了透過CHtml建立View(頁面視圖Form),透過CController來處理使用者提交事件,和Windows 桌面應(yīng)用程式或ASP.Net做個類比, Yii 中視圖View (HTML Form) 類似WinForm或Asp .Net 的Page。 控制類別 Controller類似Windows桌面應(yīng)用程式或Asp.Net的事件處理(Code-Behind)類別。不同的是Asp.Net和Windows 桌面應(yīng)用程式可以為UI中各 個UI元件,例如文字框,按鈕定義Id,然後為不同的UI元件新增事件處理。 PHP應(yīng)用程式或是Yii應(yīng)用程式?jīng)]有對應(yīng)的機(jī)制可以為定義在 HTML Form中的UI元件定義一個Id,並為UI元件定義事件處理。 然而Yii 框架提供了CFormModel 可以支援類似的功能,簡單的 說,透過CFormModel,可以為HTML Form 中的UI小元件定義變量,並且可以在其控制類別Controller中存取這些變數(shù)。每個Yii View(Form)一般都提供一個「提交」按鈕(Submit Button),使用者點擊這個「提交按鈕」觸發(fā)CController物件對應(yīng)的actionXXX 方法,在actionXXX 方法中可以透過CFormModel來存取HTML Form的UI元件的值。

前面教學(xué)中說過Yii中的模 類型(Model)是 CModel 或其子類別的實例。模型用於保持資料以及與其相關(guān)的業(yè)務(wù)邏輯,

Yii 實作了兩種類型的模型:表 單一模型和 Active Record。二者均繼承於相同的基底類別 CModel。

表單模型是 CFormModel 的實例。表單模型用於保持從使用者的輸入獲取的資料。 這些數(shù)據(jù)經(jīng)常被獲取,使用,然後丟棄。例如,在一個登入頁面中, 我們可以使用表單模型來表示由最終使用者提供的使用者名稱和密碼資訊。更多詳情,請參考使用表單。本篇介紹CFormModel的用法,

Active Record (AR) 是一種用於透過物件導(dǎo)向的風(fēng)格抽象化資料庫存取的設(shè)計模式。 每個 AR 物件是一個CActiveRecord 或其子類別的實例。代表數(shù) 據(jù)表中的一行。 行中的欄位對應(yīng) AR 物件中的屬性。更多關(guān)於 AR 的細(xì)節(jié)請閱讀?Active Record. 後面介紹資料庫使用時再介紹。

本篇使用一個簡單的登入介面來介紹FormModel的用法,本例下載。

1. 定義模型類別

下面我們建立了一個 LoginForm (protected/models/LoginForm.php) 模型類別用於在一個登入頁面中收集使用者的輸入。 由於登入資訊只用於驗證用戶,並不需要儲存,因此我們將 LoginForm 建立為一個 表單模型。

class LoginForm extends
CFormModel    
{    
    public $username;    
    public $password;    
    public $rememberMe=false;    
}

2. 聲明驗證規(guī)則
一旦用戶提交了他的輸入,模型被填充,我們就需要在使用前確保用戶的輸入是有效的。 這是透過將使用者的輸入和一系列規(guī)則執(zhí)行驗證來實現(xiàn)的。我們在 rules() 方法中指定這些驗證規(guī)則, 此方法應(yīng)傳回一個規(guī)則配置 陣列。

class LoginForm extends CFormModel    
{    
    public $username;    
    public $password;    
    public $rememberMe=false;    
        
    private $_identity;    
        
    public function rules()    
    {    
        return array(    
            array('username, password', 'required'),    
            array('rememberMe', 'boolean'),    
            array('password', 'authenticate'),    
        );    
    }    
        
    public function authenticate($attribute,$params)    
    {    
        $this->_identity=new UserIdentity($this->username,    
              $this->password);    
        if(!$this->_identity->authenticate())    
            $this->addError('password','錯誤的用戶名或密碼。');    
    }    
}

上述程式碼指定:username 和 password 為必填項, password 應(yīng)被驗證(authenticated),rememberMe 應(yīng)該是一 個布林值。

rules() 傳回的每個規(guī)則必須是以下格式:

array('AttributeList', 'Validator',
'on'=>'ScenarioList', ...附加選項)

其中AttributeList(特性列表) 是需要透過此規(guī)則驗證的特性列表字串,每個特性名字由逗號分隔器;Validator(驗證器) 指定要執(zhí)行驗證的種類;on 參數(shù)是可選的,它指定此規(guī)則應(yīng)被應(yīng)用到的場景清單; 附加選項是一個名值對數(shù)組,用於初始化對應(yīng)驗證器的屬性值。

有三種方式可在驗證規(guī)則中指定 Validator 。第一, Validator 可以是模型類別中一個方法的名字,就像上面範(fàn)例中的 authenticate 。驗證方法必須是下面的結(jié)構(gòu):

/**   
 * @param string 所要驗證的特性的名字   
 * @param array 驗證規(guī)則中指定的選項   
 */
public function ValidatorName($attribute,$params) { ... }

第二,Validator 可以是一個驗證器類的名字,當(dāng)此規(guī)則被應(yīng)用時, 一個驗證器類的實例將被創(chuàng)建以執(zhí)行實際驗證。規(guī)則中的附加選項用于初始化實例的屬性值。 驗證器類必須繼 承自 CValidator。

第三,Validator 可以是一個預(yù)定義的驗證器類的別名。在上面的例子中, required 名字是 CRequiredValidator 的別名,它用于確保所驗證的特性值不為空。 下面是預(yù)定義的驗證器別名的完整列表:

boolean: CBooleanValidator 的別名, 確保特性有一個 CBooleanValidator::trueValue 或CBooleanValidator::falseValue 值。

captcha: CCaptchaValidator 的別名,確保特性值等于 CAPTCHA 中顯示的驗證碼。

compare: CCompareValidator 的別 名,確保特性等于另一個特性或常量。

email: CEmailValidator 的別名,確保特性是一個有效的Email地址。

default: CDefaultValueValidator 的別名,指定特性的默認(rèn)值。

exist: CExistValidator 的別名,確保特性值可以在指定表的列中 可以找到。

file: CFileValidator 的別名,確保特性含有一個上傳文件的名字。

filter: CFilterValidator 的別名,通 過一個過濾器改變此特性。

in: CRangeValidator 的別名,確保數(shù)據(jù)在一個預(yù)先指定的值的范圍之內(nèi)。

length: CStringValidator 的別名,確保數(shù)據(jù)的長度在一個指定的范圍之內(nèi)。

match: CRegularExpressionValidator 的別名,確保 數(shù)據(jù)可以匹配一個正則表達(dá)式。

numerical: CNumberValidator 的別名,確保數(shù)據(jù)是一個有效的數(shù)字。

required: CRequiredValidator 的別名,確保特性不為空。

type: CTypeValidator 的別名,確保特性是指定的數(shù)據(jù)類型。

unique: CUniqueValidator 的別名,確保數(shù)據(jù)在數(shù)據(jù)表的列中是唯一的。

url: CUrlValidator 的別名,確保數(shù)據(jù)是一個有效的 URL 。

下面我們列出了幾個只用這些預(yù)定義驗證器的示例:

// 用戶名為必填項    
array('username', 'required'),    
// 用戶名必須在 3 到 12 個字符之間    
array('username', 'length', 'min'=>3, 'max'=>12),    
// 在注冊場景中,密碼password必須和password2一致。    
array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'register'),    
// 在登錄場景中,密碼必須接受驗證。    
array('password', 'authenticate', 'on'=>'login'),

3. 安全的特性賦值

在一個類的實例被創(chuàng)建后,我 們通常需要用最終用戶提交的數(shù)據(jù)填充它的特性。 這可以通過如下塊賦值(massive assignment)方式輕松實現(xiàn):

$model=new LoginForm;
if(isset($_POST['LoginForm']))
$model->attributes=$_POST['LoginForm'];最后的表達(dá)式被稱作 塊賦值(massive assignment) ,它將 $_POST['LoginForm'] 中的每一項復(fù)制到相應(yīng)的模型特性中。這相當(dāng)于如下賦值方法:

foreach($_POST
['LoginForm'] as $name=>$value)    
{    
    if($name 是一個安全的特性)    
        $model->$name=$value;    
}

檢測特性的安全非常重要,例如,如果我們以為一個表的主鍵是安全的而暴露了它,那么攻擊者可能就獲得了一個修 改記錄的主鍵的機(jī)會, 從而篡改未授權(quán)給他的內(nèi)容。

檢測特性安全的策略在版本 1.0 和 1.1 中是不同的,下面我們將 分別講解:

1.1 中的安全特性

在版本 1.1 中,特性如果出現(xiàn)在相應(yīng)場景的一個驗證規(guī)則中,即被認(rèn)為是安全的 。 例如:

array('username, password', 'required', 'on'=>'login, register'),
array('email', 'required', 'on'=>'register'),如上所示, username 和 password 特性在 login 場景中是必 填項。而 username, password 和 email 特性在register 場景中是必填項。 于是,如果我們在 login 場景中執(zhí)行塊賦值,就 只有 username 和 password 會被塊賦值。 因為只有它們出現(xiàn)在 login 的驗證規(guī)則中。 另一方面,如果場景是 register , 這三個特性就都可以被塊賦值。

// 在登錄場景中    
$model=new User('login');    
if(isset($_POST['User']))    
    $model->attributes=$_POST['User'];    
        
// 在注冊場景中    
$model=new User('register');    
if(isset($_POST['User']))    
    $model->attributes=$_POST['User'];

那么為什么我們使用這樣一種策略來檢測特性是否安全呢? 背后的基 本原理就是:如果一個特性已經(jīng)有了一個或多個可檢測有效性的驗證規(guī)則,那我們還擔(dān)心什么呢?

請記住,驗證規(guī)則是 用于檢查用戶輸入的數(shù)據(jù),而不是檢查我們在代碼中生成的數(shù)據(jù)(例如時間戳,自動產(chǎn)生的主鍵)。 因此,不要 為那些不接受 最終用戶輸入的特性添加驗證規(guī)則。

有時候,我們想聲明一個特性是安全的,即使我們沒有為它指定任何規(guī)則。 例如, 一篇文章的內(nèi)容可以接受用戶的任何輸入。我們可以使用特殊的 safe 規(guī)則實現(xiàn)此目的:

array('content', 'safe')

為了完成起見,還有一個用于聲明一個屬性為不安全的 unsafe 規(guī)則:

array ('permission', 'unsafe')

unsafe 規(guī)則并不常用,它是我們之前定義的安全特性的一個例外 。

1.0 中的安全特性

在版本1.0中,決定一個數(shù)據(jù)項是否是安全的,基于一個名為 safeAttributes 方法的返回值 和數(shù)據(jù)項被指定的場景. 默認(rèn)的,這個方法返回所有公共成員變量作為 CFormModel 的安全特性,而它也返回了除了主鍵外, 表中 所有字段名作為 CActiveRecord的安全特性.我們可以根據(jù)場景重寫這個方法來限制安全特性 .例如, 一個用戶模型可以包含很 多特性,但是在 login 場景.里,我們只能使用 username 和 password 特性.我們可以按照如下來指定這一限制 :

public function safeAttributes()    
{    
    return array(    
        parent::safeAttributes(),    
        'login' => 'username, password',    
    );    
}safeAttributes 方法更準(zhǔn)確的返回值應(yīng)該是如下結(jié)構(gòu)的 :
array(    
   // these attributes can be massively assigned in any scenario    
   // that is not explicitly specified below    
   'attr1, attr2, ...',    
     *    
   // these attributes can be massively assigned only in scenario 1    
   'scenario1' => 'attr2, attr3, ...',    
     *    
   // these attributes can be massively assigned only in scenario 2    
   'scenario2' => 'attr1, attr3, ...',    
)

如果模型不是場景敏感的(比如,它只在一個場景中使用,或者所有場景共享了一套同樣的安全特性),返 回值可以是如 下那樣簡單的字符串.

'attr1, attr2, ...'

而那些不安全的數(shù)據(jù)項,我們需要使用獨(dú)立的賦值語句來分 配它們到相應(yīng)的特性.如下所示:

$model->permission='admin';    
$model->id=1;4. 觸發(fā)驗證

一旦模型被用戶提交的數(shù)據(jù)填充,我們就可以調(diào)用 CModel::validate() 出發(fā) 數(shù)據(jù)驗證進(jìn)程。此方法返回一個指示驗證是否成功的值。 對 CActiveRecord 模型來說,驗證也可以在我們調(diào)用其 CActiveRecord::save() 方法時自動觸發(fā)。

我們可以使用 scenario 設(shè)置場景屬性,這樣,相應(yīng)場景的驗證規(guī)則就會被 應(yīng)用。

驗證是基于場景執(zhí)行的。 scenario 屬性指定了模型當(dāng)前用于的場景和當(dāng)前使用的驗證規(guī)則集。 例如,在 login 場景中,我們只想驗證用戶模型中的 username 和 password 輸入; 而在 register 場景中,我們需要驗證更多的輸入,例如 email, address, 等。 下面的例子演示了如何在 register 場景中執(zhí)行驗證:

// 在注冊場景中創(chuàng)建一個  User 模型
。等價于:    
// $model=new User;    
// $model->scenario='register';    
$model=new User('register');    
        
// 將輸入的值填充到模型    
$model->attributes=$_POST['User'];    
        
// 執(zhí)行驗證    
if($model->validate())   // if the inputs are valid    
    ...    
else
    ...規(guī)則關(guān)聯(lián)的場景可以通過規(guī)則中的 on 選項指定。如果 on 選項未設(shè)置,則此規(guī)則會應(yīng)用于所有場景。例如:
public function rules()    
{    
    return array(    
        array('username, password', 'required'),    
        array('password_repeat', 'required', 'on'=>'register'),    
        array('password', 'compare', 'on'=>'register'),    
    );    
}

第一個規(guī)則將應(yīng)用于所有場景,而第二個將只會應(yīng)用于 register 場景。

5. 提取驗證錯誤

驗證完成 后,任何可能產(chǎn)生的錯誤將被存儲在模型對象中。 我們可以通過調(diào)用 CModel::getErrors()和CModel::getError() 提取這些錯 誤信息。 這兩個方法的不同點在于第一個方法將返回 所有 模型特性的錯誤信息,而第二個將只返回 第一個 錯誤信息。

6. 特性標(biāo)簽

當(dāng)設(shè)計表單時,我們通常需要為每個表單域顯示一個標(biāo)簽。 標(biāo)簽告訴用戶他應(yīng)該在此表單域中填寫 什么樣的信息。雖然我們可以在視圖中硬編碼一個標(biāo)簽, 但如果我們在相應(yīng)的模型中指定(標(biāo)簽),則會更加靈活方便。

默認(rèn)情況下 CModel 將簡單的返回特性的名字作為其標(biāo)簽。這可以通過覆蓋 attributeLabels() 方法自定義。 正如在 接下來的小節(jié)中我們將看到的,在模型中指定標(biāo)簽會使我們能夠更快的創(chuàng)建出更強(qiáng)大的表單。

7. 創(chuàng)建動作Action方法

創(chuàng)建好LoginForm 表單Model后,我們就可以為它編寫用戶提交后的處理代碼(對應(yīng)到Controller中的某個Action方法) 。本例使用缺省的SiteController,對應(yīng)的action為actionLogin.

public function actionLogin()    
{    
    $model=new LoginForm;    
    // collect user input data    
    if(isset($_POST['LoginForm']))    
    {    
        $model->attributes=$_POST['LoginForm'];    
        // validate user input and redirect to the previous page if valid    
        if($model->validate() && $model->login()){    
        
            $this->render('index');    
            return;    
        }    
    }    
    // display the login form    
    $this->render('login',array('model'=>$model));    
}

如上所示,我們首先創(chuàng)建了一個 LoginForm 模型示例; 如果請求是一個 POST 請求(意味著這個登錄表單被提交了 ),我們則使用提交的數(shù)據(jù) $_POST['LoginForm'] 填充 $model ;然后我們驗證此輸入,如果驗證成功,則顯示index 頁面。 如果驗證失敗,或者此動作被初次訪問,我們則渲染 login 視圖。
注意的我們修改了SiteController 的缺省 action為login.

/**   
 * @var string sets the default action to be 'login'   
 */
public $defaultAction='login';

因此用戶見到的第一個頁面為login頁面而非index頁面,只有在用戶輸入正確的用 戶名,本例使用固定的用戶名和密碼,參見UserIdentity類定義,實際應(yīng)用可以讀取數(shù)據(jù)庫或是LDAP服務(wù)器。

/**   
 * UserIdentity represents the data needed to identity a user.   
 * It contains the authentication method that checks if the provided   
 * data can identity the user.   
 */
class UserIdentity extends CUserIdentity    
{    
    /**   
     * Authenticates a user.   
     * The example implementation makes sure if the username and password   
     * are both 'demo'.   
     * In practical applications, this should be changed to authenticate   
     * against some persistent user identity storage (e.g. database).   
     * @return boolean whether authentication succeeds.   
     */
    public function authenticate()    
    {    
        $users=array(    
            // username => password    
            'demo'=>'demo',    
            'admin'=>'admin',    
        );    
        if(!isset($users[$this->username]))    
            $this->errorCode=self::ERROR_USERNAME_INVALID;    
        else if($users[$this->username]!==$this->password)    
            $this->errorCode=self::ERROR_PASSWORD_INVALID;    
        else
            $this->errorCode=self::ERROR_NONE;    
        return !$this->errorCode;    
    }    
}

讓我們特別留意一下 login 動作中出現(xiàn)的下面的 PHP 語句:

$model->attributes=$_POST ['LoginForm'];

正如我們在 安全的特性賦值 中所講的, 這行代碼使用用戶提交的數(shù)據(jù)填充模型。 attributes 屬性由 CModel定義,它接受一個名值對數(shù)組并將其中的每個值賦給相應(yīng)的模型特性。 因此如果 $_POST ['LoginForm'] 給了我們這樣的一個數(shù)組,上面的那段代碼也就等同于下面冗長的這段 (假設(shè)數(shù)組中存在所有所需的特 性):

$model->username=$_POST['LoginForm']['username'];
$model->password=$_POST ['LoginForm']['password'];
$model->rememberMe=$_POST['LoginForm'] ['rememberMe'];

8. 構(gòu)建視圖

編寫 login 視圖是很簡單的,我們以一個 form 標(biāo)記開始,它的 action 屬性應(yīng)該是前面講述的 login 動作的URL。 然后我們需要為 LoginForm 類中聲明的屬性插入標(biāo)簽和表單域。最后, 我們插入 一個可由用戶點擊提交此表單的提交按鈕。所有這些都可以用純HTML代碼完成。

Yii 提供了幾個助手(helper)類簡化 視圖編寫。例如, 要創(chuàng)建一個文本輸入域,我們可以調(diào)用 CHtml::textField(); 要創(chuàng)建一個下拉列表,則調(diào)用 CHtml::dropDownList()。

信息: 你可能想知道使用助手的好處,如果它們所需的代碼量和直接寫純HTML的代碼量相當(dāng)?shù)?話。 答案就是助手可以提供比 HTML 代碼更多的功能。例如, 如下代碼將生成一個文本輸入域,它可以在用戶修改了其值時觸 發(fā)表單提交動作。

CHtml::textField($name,$value,array('submit'=>''));

不然的話你就 需要寫一大堆 JavaScript 。

下面,我們使用 CHtml 創(chuàng)建一個登錄表單。我們假設(shè)變量 $model 是 LoginForm 的實例 。

<center class="form">    
<?php echo CHtml::beginForm(); ?>    
    <?php echo CHtml::errorSummary($model); ?>
    <center class="row">
        <?php echo CHtml::activeLabel($model,&#39;username&#39;); ?>    
        <?php echo CHtml::activeTextField($model,&#39;username&#39;) ?>    
    </center>
    <center class="row">    
        <?php echo CHtml::activeLabel($model,&#39;password&#39;); ?>    
        <?php echo CHtml::activePasswordField($model,&#39;password&#39;) ?>    
    </center>
    <center class="row rememberMe">    
        <?php echo CHtml::activeCheckBox($model,&#39;rememberMe&#39;); ?>    
        <?php echo CHtml::activeLabel($model,&#39;rememberMe&#39;); ?>    
    </center>
    <center class="row submit">    
        <?php echo CHtml::submitButton(&#39;Login&#39;); ?>    
    </center>
<?php echo CHtml::endForm(); ?>    
</center><!-- form -->

上述代碼生成了一個更加動態(tài)的表單,例如, CHtml::activeLabel() 生成一個與 指定模型的特性相關(guān)的標(biāo)簽。 如果此特性有一個輸入錯誤,此標(biāo)簽的CSS class 將變?yōu)?error,通過 CSS 樣式改變了標(biāo)簽的外 觀。 相似的,CHtml::activeTextField() 為指定模型的特性生成一個文本輸入域,并會在錯誤發(fā)生時改變它的 CSS class。

如果我們使用由 yiic 腳本生提供的 CSS 樣式文件,生成的表單就會像下面這樣:

PHP開發(fā)框架Yii Framework教學(xué)(8) 使用FormModel

CSS 樣式定義在css目錄下,本例使用的為Yii缺省的樣式。

從版本 1.1.1 開始,提供了一個新的小物件 CActiveForm 以簡化表單創(chuàng)建。 這個小物件可同時提供客戶端及服務(wù)器端無縫的、一致的驗證。使用 CActiveForm, 上面的代 碼可重寫為:

<center class="form">    
<?php $form=$this->beginWidget(&#39;CActiveForm&#39;); ?>    
         
    <?php echo $form->errorSummary($model); ?>    
         
    <center class="row">    
        <?php echo $form->label($model,&#39;username&#39;); ?>    
        <?php echo $form->textField($model,&#39;username&#39;) ?>    
    </center>    
         
    <center class="row">    
        <?php echo $form->label($model,&#39;password&#39;); ?>    
        <?php echo $form->passwordField($model,&#39;password&#39;) ?>    
    </center>    
         
    <center class="row rememberMe">    
        <?php echo $form->checkBox($model,&#39;rememberMe&#39;); ?>    
        <?php echo $form->label($model,&#39;rememberMe&#39;); ?>    
    </center>    
         
    <center class="row submit">    
        <?php echo CHtml::submitButton(&#39;Login&#39;); ?>    
    </center>    
         
<?php $this->endWidget(); ?>    
</center><!-- form -->

從下篇開始將逐個介紹Yii框架支持的UI組件包括CActiveForm的用法。

以上就是PHP開發(fā)框架Yii Framework教程(8) 使用FormModel的內(nèi)容,更多相關(guān)內(nèi)容請關(guān)注PHP中文網(wǎng)(ipnx.cn)!


本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
Yii2 vs Phalcon:哪個框架更適合開發(fā)顯示卡渲染應(yīng)用? Yii2 vs Phalcon:哪個框架更適合開發(fā)顯示卡渲染應(yīng)用? Jun 19, 2023 am 08:09 AM

在當(dāng)前資訊時代,大數(shù)據(jù)、人工智慧、雲(yún)端運(yùn)算等技術(shù)已成為了各大企業(yè)關(guān)注的熱點。在這些技術(shù)中,顯示卡渲染技術(shù)作為一種高效能圖形處理技術(shù),受到了越來越多的關(guān)注。顯示卡渲染技術(shù)廣泛應(yīng)用於遊戲開發(fā)、影視特效、工程建模等領(lǐng)域。而對於開發(fā)者來說,選擇一個適合自己專案的框架,是一個非常重要的決策。在目前的語言中,PHP是一種相當(dāng)有活力的語言,一些優(yōu)秀的PHP框架如Yii2、Ph

Yii框架中的資料查詢:有效率地存取數(shù)據(jù) Yii框架中的資料查詢:有效率地存取數(shù)據(jù) Jun 21, 2023 am 11:22 AM

Yii框架是一個開源的PHPWeb應(yīng)用程式框架,提供了眾多的工具和元件,簡化了Web應(yīng)用程式開發(fā)的流程,其中資料查詢是其中一個重要的元件之一。在Yii框架中,我們可以使用類似SQL的語法來存取資料庫,從而有效率地查詢和操作資料。 Yii框架的查詢建構(gòu)器主要包括以下幾種類型:ActiveRecord查詢、QueryBuilder查詢、命令查詢和原始SQL查詢

Symfony vs Yii2:哪個框架比較適合開發(fā)大型Web應(yīng)用? Symfony vs Yii2:哪個框架比較適合開發(fā)大型Web應(yīng)用? Jun 19, 2023 am 10:57 AM

隨著Web應(yīng)用需求的不斷增長,開發(fā)者在選擇開發(fā)框架方面也越來越有選擇的空間。 Symfony和Yii2是兩個備受歡迎的PHP框架,它們都具有強(qiáng)大的功能和效能,但在面對需要開發(fā)大型網(wǎng)路應(yīng)用程式時,哪個框架更適合呢?接下來我們將對Symphony和Yii2進(jìn)行比較分析,以幫助你更好地進(jìn)行選擇?;靖攀鯯ymphony是一個由PHP編寫的開源Web應(yīng)用框架,它是建立

如何使用PHP框架Yii開發(fā)一個高可用的雲(yún)端備份系統(tǒng) 如何使用PHP框架Yii開發(fā)一個高可用的雲(yún)端備份系統(tǒng) Jun 27, 2023 am 09:04 AM

隨著雲(yún)端運(yùn)算技術(shù)的不斷發(fā)展,資料的備份已經(jīng)成為了每個企業(yè)必須要做的事情。在這樣的背景下,開發(fā)一款高可用的雲(yún)端備份系統(tǒng)尤其重要。而PHP框架Yii是一款功能強(qiáng)大的框架,可以幫助開發(fā)者快速建立高效能的Web應(yīng)用程式。以下將介紹如何使用Yii框架開發(fā)一款高可用的雲(yún)端備份系統(tǒng)。設(shè)計資料庫模型在Yii框架中,資料庫模型是非常重要的一環(huán)。因為資料備份系統(tǒng)需要用到很多的表和關(guān)

php框架laravel和yii區(qū)別是什麼 php框架laravel和yii區(qū)別是什麼 Apr 30, 2025 pm 02:24 PM

Laravel和Yii的主要區(qū)別在於設(shè)計理念、功能特性和使用場景。 1.Laravel注重開發(fā)的簡潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開發(fā)和初學(xué)者。 2.Yii強(qiáng)調(diào)性能和效率,適用於高負(fù)載應(yīng)用,提供高效的ActiveRecord和緩存系統(tǒng),但學(xué)習(xí)曲線較陡。

yii與Docker:容器化和部署您的應(yīng)用程序 yii與Docker:容器化和部署您的應(yīng)用程序 Apr 02, 2025 pm 02:13 PM

使用Docker容器化和部署Yii應(yīng)用的步驟包括:1.創(chuàng)建Dockerfile,定義鏡像構(gòu)建過程;2.使用DockerCompose啟動Yii應(yīng)用和MySQL數(shù)據(jù)庫;3.優(yōu)化鏡像大小和性能。這不僅涉及到具體的技術(shù)操作,還包括理解Dockerfile的工作原理和最佳實踐,以確保高效、可靠的部署。

Yii2 vs Symfony:哪個框架比較適合API開發(fā)? Yii2 vs Symfony:哪個框架比較適合API開發(fā)? Jun 18, 2023 pm 11:00 PM

隨著網(wǎng)路的快速發(fā)展,API成為了各種應(yīng)用間資料交換的重要方式。因此,開發(fā)一款易於維護(hù)、高效、穩(wěn)定的API框架變得越來越重要。而在選擇API框架時,Yii2和Symfony是兩個備受開發(fā)者歡迎的選擇。那麼,哪一個比較適合API開發(fā)呢?本文將對這兩個框架進(jìn)行比較,並給出一些結(jié)論。一、基本介紹Yii2和Symfony都是成熟的PHP框架,都有相應(yīng)的擴(kuò)展,可以用來開

Yii2程式設(shè)計指南:執(zhí)行Cron服務(wù)的方法 Yii2程式設(shè)計指南:執(zhí)行Cron服務(wù)的方法 Sep 01, 2023 pm 11:21 PM

如果您問「Yii是什麼?」請參閱我之前的教學(xué):Yii框架簡介,其中回顧了Yii的優(yōu)點,並概述了2014年10月發(fā)布的Yii2.0的新增功能。嗯>在這個使用Yii2程式設(shè)計系列中,我將指導(dǎo)讀者使用Yii2PHP框架。在今天的教學(xué)中,我將與您分享如何利用Yii的控制臺功能來執(zhí)行cron作業(yè)。過去,我在cron作業(yè)中使用了wget—可透過Web存取的URL來執(zhí)行我的後臺任務(wù)。這引發(fā)了安全性問題並存在一些效能問題。雖然我在我們的啟動系列安全性專題中討論了一些減輕風(fēng)險的方法,但我曾希望過渡到控制臺驅(qū)動的命令

See all articles