コード例 #1
0
ファイル: simpleOrm.php プロジェクト: ZSShang/mylearn
    {
        $field = preg_replace('/^findBy(\\w*)$/', '${1}', $method);
        $query = "SELECT * FROM" . static::$table . "where {$field}='{$args['0']}'";
        return self::createDomain($query);
    }
    private static function createDomain($query)
    {
        $klass = get_called_class();
        $domain = new $klass();
        $domain->fieldvalues = array();
        $domain->select = $query;
        foreach ($klass::$fields as $field => $type) {
            $domain->fieldvalues[$field] = 'TODO:set from sql result';
        }
        return $domain;
    }
}
class Customer extends ActiveRecord
{
    protected static $table = 'custdb';
    protected static $fields = array('id' => 'int', 'email' => 'varchar', 'lastname' => 'varchar');
}
class Sales extends ActiveRecord
{
    protected static $table = 'salesdb';
    protected static $fields = array('id' => 'int', 'item' => 'varchar', 'qty' => 'int');
}
assert("SELECT * FROM custdb where id=123" == Customer::findById(123)->select);
assert("TODO:set from sql result" == Customer::findById(123)->email);
assert("SELECT * FROM salesdb where id=321" == Sales::findById(321)->select);
assert("SELECT * FROM custdb where Lastname='Denoncourt'" == Customer::findByLastname('Denoncourt')->select);
コード例 #2
0
ファイル: simpleOrm.php プロジェクト: EdenChan/Instances
    {
        $field = preg_replace('/^findBy(\\w*)$/', '${1}', $method);
        $query = "select * from " . static::$table . " where {$field} = '{$args['0']}'";
        return self::createDomain($query);
    }
    private static function createDomain($query)
    {
        $klass = get_called_class();
        $domain = new $klass();
        $domain->fieldvalue = array();
        $domain->select = $query;
        foreach ($klass::fields as $field => $type) {
            $domain->fieldvalue[$field] = 'TODO: set from sql result';
        }
        return $domain;
    }
}
class Customer extends ActiveRecord
{
    protected static $table = 'custdb';
    protected static $fields = array('id' => 'int', 'email' => 'varchar', 'lastname' => 'varchar');
}
class Sales extends ActiveRecord
{
    protected static $table = 'salesdb';
    protected static $fields = array('id' => 'int', 'item' => 'varchar', 'qty' => 'int');
}
Customer::findById(123)->select;
Customer::findById(123)->email;
Sales::findById(123)->select;
Sales::findByItem('item')->select;
コード例 #3
0
        $field = preg_replace('/^findBy(\\w*)$/', '${1}', $method);
        $query = "select * from" . static::$table . "where {$field} = '{$args['0']}'";
        return self::createDomain($query);
    }
    private static function createDomain($query)
    {
        //get_called_class() 获取当前调用的类
        $klass = get_called_class();
        $domain = new $klass();
        $domain->fieldvalues = array();
        $domain->select = $query;
        foreach ($klass::$fields as $field => $type) {
            $domain->fieldvalues[$field] = 'TODO::set from sql result';
        }
        return $domain;
    }
}
class Customer extends ActiveRecord
{
    protected static $table = 'custdb';
    protected static $fields = array('id' => 'int', 'email' => 'varchar', 'lastname' => 'varchar');
}
class Sales extends ActiveRecord
{
    protected static $table = 'saledb';
    protected static $fields = array('id' => 'int', 'item' => 'varchar', 'qty' => 'int');
}
assert("select * from custdb where id = 123" == Customer::findById(123)->select);
assert("TODO::set from sql result" == Customer::findById(123)->email);
assert("select * from saledb where id = 321" == Sales::findById(321)->select);
assert("select * from custdb where Lastname='Denoncourt'" == Customer::findByLastname('Denoncourt')->select);