Ben böyle bir şey yapabilmek istiyorum:
$table_object->getRows()->where($wer)->or($or)->orderBy('field', 'DESC');
I tüm yöntemler her zaman denir ve bu sırayla olacağından emin olsaydı, o zaman basit olacak ve sorgu oluşturmak ve nihayet orderBy yöntemiyle idam alır, böylece ben her yöntem çağrısı nesnenin kendisi bir örneğini dönebilirsiniz. Ancak ben sınıfı da öylesine gibi sorguları yürütmek için güçlü olmak istiyorum:
$table_object->getRows()->where($wer);
Aşağıdaki kodu yalnızca yöntem GetRows sonra çağrılır, ikinci biri ile (tüm yöntemler denir yani) ilk kod örneği için değil, çalışmak istiyorum. Sadece kendisi bir örneğini döndürür.
class DatabaseTable extends Database
{
protected $table_name;
protected $query;
public function getRows()
{
return ($this instanceof self)? $this : false;
}
public function where(array $where)
{
foreach ($where as $field => $value){
$w[] = $field . ' = "' . $this->escapeString($value) . '"';
}
$this->query = "SELECT * FROM {$this->table_name} WHERE " . join($w, ' AND '));
return $this;
}
public function or(array $Clause)
{
foreach ($clause as $field => $value){
$o[] = $field . ' = "' . $this->escapeString($value) . '"';
}
$this->query .= join($w, ' AND ');
return $this;
}
public function orderBy($field, $type)
{
$this->query .= " ORDER BY $field $type ";
$this->executeQuery($this->query);
}
}
Ignore all minor errors - (i didnt check if it worked for sure, but it should.) bunu nasıl elde edebilirsiniz?