sanek_os9
@sanek_os9
Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux

Как вызвать методы не создавая объект?

Есть следующий код
class test{
    public $table;

    public function table(string $table)
    {
        $this->table = $table;
        return $this;
    }
    public function delete()
    {
        echo $this->table;
    }
}
$db = new test;
$db->table('users')->delete(); // users

Как сделать подобное без создания объекта, что бы вызов был таким
test::table('users')->delete();
  • Вопрос задан
  • 967 просмотров
Решения вопроса 3
twobomb
@twobomb
Мне кажется нельзя вызывать методы у несуществующего объекта хотя бы потому-что свойства которые в них используются не инициализированы, но без создания объекта можно вызывать статические методы
Ответ написан
@D3lphi
Например, так:

class Test
{
    private $tableName;

    public function __construct($tableName)
    {
        $this->tableName = $tableName;
    }

    public static function table($tableName)
    {
        return new self($tableName);
    }

    public function delete()
    {
        // do something
    }
}
Ответ написан
@egormmm
Борітеся — поборете!
(new test)->table('users')->delete();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы