babyone 2012-06-30 19:14:44 2693次浏览 6条回复 0 0 0

在学习blog范例的时候看到这样的用法: $user = User::model()->find('LOWER(username)=?', array($username));

想问问这句话具体的含义是什么,是否是对User类进行了一次实例化? 上面那句话是否等效于:

$user =new User();
$user->find('LOWER(username)=?', array($username));

谢谢

  • 回复于 2012-06-30 19:15 举报

    User类里面的model方法是

    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
    

    这个具体是做什么的?

  • 回复于 2012-06-30 21:12 举报

    自己研究了下,好像明白了些
    上面我都说错了

    $user = User::model()->find('LOWER(username)=?', array($username));
    是返回了一个数据记录的抽象对象
    User::model()实际是调用了模型类父类的方法,返回了数据记录的对象。

    不知道这样理解是否正确?

  • 回复于 2012-07-02 09:44 举报

    User::model()这个model()方法是静态方法,不需要实例化User类即可使用,用法为User::model()model()方法是重载了父类方法,且是对父类方法的完全重载,也就是没有添油加醋,里面执行的代码就是父类中model()执行的代码。

  • 回复于 2012-07-02 11:18 举报

    非常感谢,你说的这点我明白了,不过
    $user = User::model()->find('LOWER(username)=?', array($username));
    这个是返回了一个User类的实例吧?而不是User父类的?

  • 回复于 2012-07-02 12:47 举报

    这个返回的就是父类中model()方法执行后返回的数据,其实也就是一个User实例。

  • 回复于 2012-07-02 23:13 举报

    明白了,非常非常感谢

您需要登录后才可以回复。登录 | 立即注册