свободный интерфейс — функция вызова модели php mvc для результата данных

У меня есть простая модель:

class Model
{
public function find($name) {
return mysqli_query($con, 'select * from table where name = "'.$name.'"');
}

public function first($rows) {
foreach ($rows as $row) {
return $row;
}
}
}

Я хочу сделать что-то вроде этого:

$model = new Model;
$model->find('test')->first();

Но это не работает

Fatal error: Call to undefined method mysqli_result::first()

Это работает, если я использую $model->first($model->find('test')) но это действительно некрасиво Что я должен изменить, чтобы достичь $model->find('test')->first() звонишь?

0

Решение

class TestModel{
private $con;
private $results;

/**
* Why not use dependency injection here. It will decouple the classes.
*
* @param \DatabaseConnection $con
*/
public function __construct(DatabaseConnection $con)
{
$this->con = $con;
}

public function find()
{
$this->results = mysqli_query($this->con, 'SELECT * FROM `table` where `name` = ' . $name) // Again you should really bind these.
return $this;
}

public function where($field, $field_value)
{
$this->results = mysqli_query($this->con, 'SELECT * FROM `table` where `' . $field . '` = ' . $field_value); // Again you should really bind these.
return $this;
}

public function first()
{
foreach ($this->results as $row)
{
return $row;
}
}
}

Теперь вы можете использовать $model->find('test')->first();

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]