2011-09-27 93 views
2

我現在仍然在博客教程上學習YII,並且對一些代碼感到好奇。YII CActiveRecord-> find()

此鏈接
http://www.yiiframework.com/doc/blog/1.1/en/prototype.auth

上有這樣的代碼

<?php 
class UserIdentity extends CUserIdentity 
{ 
private $_id; 

public function authenticate() 
{ 
    $username=strtolower($this->username); 
    $user=User::model()->find('LOWER(username)=?',array($username)); 
    if($user===null) 
     $this->errorCode=self::ERROR_USERNAME_INVALID; 
    else if(!$user->validatePassword($this->password)) 
     $this->errorCode=self::ERROR_PASSWORD_INVALID; 
    else 
    { 
     $this->_id=$user->id; 
     $this->username=$user->username; 
     $this->errorCode=self::ERROR_NONE; 
    } 
    return $this->errorCode==self::ERROR_NONE; 
} 

public function getId() 
{ 
    return $this->_id; 
} 
} 

,我好奇的一些代碼。

  1. 爲什麼在代碼的最後一行沒有?>
  2. at this line $user=User::model()->find('LOWER(username)=?',array($username)); why why LOWER(username)=? not LOWER(username)=。爲什麼有需要?,這是一些有條件的查詢條件,我還不知道呢?

回答

7
  1. ?>是不是真的需要,根據this link

    在文件的最後一個PHP代碼塊的結束標記是可選的,在某些情況下,忽略它是有用的,當使用include()或require(),所以在文件末尾不會出現不需要的空白,並且您以後仍然可以將響應添加到響應中。如果使用輸出緩衝也很方便,並且不希望在包含文件生成的部分末尾看到添加的不需要的空白。

  2. ?與從here看到的SQL語法有關。另外second answer here表示:

    問號代表稍後將被替換的參數。使用參數化查詢比將參數直接嵌入查詢更安全。

+1

謝謝droid :) – GusDeCooL