как можно использовать несколько функций в одном классе php - PullRequest
0 голосов
/ 27 апреля 2020

нужно вернуть данные, как это:

Person::firstname('ali')->lastname('hamrani')->age('19');

мой код:

class Person {
    protected $firstname;
    protected $lastname;
    protected $age;

    public static function firstname($firstname)
    {
        $this->$firstname = $firstname;
    }
    public static function lastname($lastname)
    {
        $this->lastname = $lastname;
    }

    public static function age($age)
    {
        $this->age = $age;
    }

    public static function toArray()
    {
        return [
            'firstname' => $this->firstname,
            'lastname' => $this->lastname,
            'age' => $this->age
        ];
    }
}

print_r(Person::firstname('ali')->lastname('hamrani')->age(19)->toArray());

мне нужно вернуть мне, как это:

[
  'firstName' => 'ali',
   'lastName' => 'hamrani',
   'age' => 19,
]

Ответы [ 4 ]

2 голосов
/ 27 апреля 2020

Во-первых, если вы хотите взаимодействовать с экземпляром Person и его собственным атрибутом, вам необходимо удалить все объявления static.

Затем, чтобы иметь возможность чередовать вызовы, вы может вернуть $this (текущий объект, для которого вы изменяете атрибут), поэтому следующая функция может быть вызвана для правильного объекта.

class Person {
    protected $firstname;
    protected $lastname;
    protected $age;

    public function firstname($firstname)
    {
        $this->firstname = $firstname;
        return $this ;
    }
    public function lastname($lastname)
    {
        $this->lastname = $lastname;
        return $this ;
    }

    public function age($age)
    {
        $this->age = $age;
        return $this ;
    }

    public function toArray()
    {
        return [
            'firstname' => $this->firstname,
            'lastname' => $this->lastname,
            'age' => $this->age
        ];
    }
}

print_r( (new Person())->firstname('ali')->lastname('hamrani')->age(19)->toArray() );
1 голос
/ 27 апреля 2020

Надеюсь, это поможет вам:

class Person {
    protected $firstname;
    protected $lastname;
    protected $age;

    public function firstname($firstname)
    {
        $this->firstname = $firstname;
        return $this;
    }
    public function lastname($lastname)
    {
        $this->lastname = $lastname;
        return $this;
    }

    public function age($age)
    {
        $this->age = $age;
        return $this;
    }

    public function toArray()
    {
        return [
            'firstname' => $this->firstname,
            'lastname' => $this->lastname,
            'age' => $this->age
        ];
    }
}
$person = new Person();
print_r($person->firstname('ali')->lastname('hamrani')->age(19)->toArray());
0 голосов
/ 27 апреля 2020

Прежде всего, вы не можете использовать ключевое слово «$ this» в функции c. Вы можете создать новую «Person» и вызвать каждую функцию следующим образом:

$someone = new Person();
$someone->firstname('ali');
$someone->lastname('hamrani');
$someone->age('19');

, затем вы можете вызвать свою функцию toArray ()

0 голосов
/ 27 апреля 2020

Попробуйте передать данные вот так

class Person {
    protected $firstname;
    protected $lastname;
    protected $age;

    public static function (Firstname $firstname). * <-like so. 
    {
        $this->$firstname = $firstname;
    }
    public static function (Lastname $lastname)
    {
        $this->lastname = $lastname;
    }

И так далее ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...