Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 关于对象和查找单行的问题_Php_Oop_Zend Framework - Fatal编程技术网

Php 关于对象和查找单行的问题

Php 关于对象和查找单行的问题,php,oop,zend-framework,Php,Oop,Zend Framework,我试图以某种方式坚持面向对象编程的规则。因此,我创建了一个用户类,它处理一个用户。此用户是从db类用户加载的 因此,现在我正在创建一个userManager类,其函数如下:findUserIdByEmail 但是,正确的面向对象方法是什么呢 我应该直接从userManager构建一个查询到db,还是应该以某种方式加载所有用户对象并在对象中找到它?我将构建类似于getUserByEmail($email)的东西,它返回完整的对象(有或没有相关对象)。在这种情况下,您可以使用$User->id访问i

我试图以某种方式坚持面向对象编程的规则。因此,我创建了一个用户类,它处理一个用户。此用户是从db类用户加载的

因此,现在我正在创建一个userManager类,其函数如下:findUserIdByEmail

但是,正确的面向对象方法是什么呢


我应该直接从userManager构建一个查询到db,还是应该以某种方式加载所有用户对象并在对象中找到它?

我将构建类似于
getUserByEmail($email)
的东西,它返回完整的对象(有或没有相关对象)。在这种情况下,您可以使用$User->id访问id(或者更好地为其构建一个好的getter),还可以访问其他属性,而无需对数据库执行其他查询。如果您开始构建函数,如
getUserIdByEmail
,您很快就会开始构建方法,如
getusernamebyeemail
getUserPasswordByEmail
,等等。看到问题了吗?

。在这种情况下,您可以使用$User->id访问id(或者更好地为其构建一个好的getter),还可以访问其他属性,而无需对数据库执行其他查询。如果您开始构建函数,如
getUserIdByEmail
,您将很快开始构建方法,如
getusernamebyeemail
getUserPasswordByEmail
,等等。看到问题了吗?

getUserByEmail($email)

它将调用数据库或任何其他数据存储。基本示例减去转义/安全性

public function getUserByEmail($email)
{
    $sql = "SELECT user_name AS username, user_id AS userId FROM User WHERE email_address =   ". $email
    $result = $this->runQuery($sql);
    while($r = $result->getAssoc()){
        $user = $this->createUserModel($r);    
    }
    return $user;
}

public function createUserModel($row)
{
    $user = new Default_Model_User;
    $user->setUsername($row['username']);
    $user->setUserId($row['userId']);

    return $user;
}
然后,email方法将调用一个方法来创建保存属性的对象并返回它。

getUserByEmail($email)

它将调用数据库或任何其他数据存储。基本示例减去转义/安全性

public function getUserByEmail($email)
{
    $sql = "SELECT user_name AS username, user_id AS userId FROM User WHERE email_address =   ". $email
    $result = $this->runQuery($sql);
    while($r = $result->getAssoc()){
        $user = $this->createUserModel($r);    
    }
    return $user;
}

public function createUserModel($row)
{
    $user = new Default_Model_User;
    $user->setUsername($row['username']);
    $user->setUserId($row['userId']);

    return $user;
}

然后,email方法将调用一个方法,该方法创建保存属性的对象并返回它。

我将创建一个与数据库中存储用户的表相对应的类Users。我还将创建一个与存储用户的表结构相对应的简单用户类

表用户将具有getSingleByEmail($theEmail)方法,该方法将返回用户对象,如果该用户不存在,则返回null

class Users
{
    public function getSingleByEmail($theEmail)
    {
        // check that email is valid
        // if not throw exception

        // get data from the database
        // either with bare SQl or with some db wrapper
        if (null !== theResult)
        {
            theResult = new User($theResult);
        }
        return theResult;
    }
}

class User
{
    private $id;
    private email;
    private $username;

    public function __construct($theResult)
    {
        $this->id = theResult->id;
        $this->email = theResult->email;
        $this->username = theResult->username;
    }
}

或者类似的东西。

我将创建一个与数据库中存储用户的表相对应的类Users。我还将创建一个与存储用户的表结构相对应的简单用户类

表用户将具有getSingleByEmail($theEmail)方法,该方法将返回用户对象,如果该用户不存在,则返回null

class Users
{
    public function getSingleByEmail($theEmail)
    {
        // check that email is valid
        // if not throw exception

        // get data from the database
        // either with bare SQl or with some db wrapper
        if (null !== theResult)
        {
            theResult = new User($theResult);
        }
        return theResult;
    }
}

class User
{
    private $id;
    private email;
    private $username;

    public function __construct($theResult)
    {
        $this->id = theResult->id;
        $this->email = theResult->email;
        $this->username = theResult->username;
    }
}
或者类似的东西。

你说的“使用它”是什么意思?作为输入,作为输出,……你所说的“使用它”是什么意思?作为输入,作为输出。。?