Добавлено: 23.05.2017 / 21:06
L!MP, по человечески херня получается, сейчас покажу что не так, и почему хочется сделать без вызова стороннего метода
$builder
->where() // and
->add('id', '<', 400)
->add('fid', '>', 4550)
->add('pod', 'in', [1,2,3])
->add('pud', 'not between', [1,2])
->where('or')
->add('pid', '>=', 600)
->add('gid', '<=', 7850)
->order('id', 'asc')
->group('fid')
->limit(10, 5 ,'page')
->res();
$builder->placeholders();
у меня все уже написано кроме builder
то есть он основной класс, от него уже все пляшет, но отдельные части реализованы отдельными классами
select, update, delete, insert, where, group, limit, order, placeholders
основной класс будет типо конструктора, и хотелось бы все в одной цепочке сделать
Добавлено: 24.05.2017 / 01:22
вот такой велосипед у меня
<?php
trait Singleton {
protected static $instance = null;
public function __clone(){}
public function __wakeup(){}
public final static function getInstance() {
if (null === static::$instance) {
static::$instance = new static();
}
return static::$instance;
}
}
class A
{
use Singleton;
private $b;
private $c;
public function b(/* args for b*/) {
$this->b = new B(/* args for b*/);
return $this->b;
}
public function c() {
$this->c = new C();
return $this->c;
}
public function res() {
echo '<pre>' . print_r($this, 1) . '</pre>';
}
}
class B
{
use Caller;
public function add() {
return $this;
}
}
class C
{
use Caller;
public function add() {
return $this;
}
}
trait Caller {
public function __call($method, $args) {
if (!method_exists(__CLASS__, $method)) {
return A::getInstance()->$method(...$args);
}
}
}
A::getInstance()->b()->add()->add()->c()->add()->add()->res();