Можно ли сделать что-то подобное в php?

$ this-> getUser $ number ();

Я не могу найти, есть ли какой-нибудь синтаксис, чтобы это стало возможным.

Отношении

0
user2515948 21 Июн 2014 в 22:46
Да, внутри класса. stackoverflow.com/ вопросы/1523479/…
 – 
putvande
21 Июн 2014 в 22:48

5 ответов

Лучший ответ

Да, есть:

$this->{"getUser".$number}();

Конечно, вы можете использовать тот же синтаксис вне метода:

$obj = new Something();
$obj->{"getUser".$number}();

Тем не менее, такой код плохо пахнет, и его следует избегать. Например, лучше заставить метод getUser принимать аргумент и вызывать его следующим образом:

$this->getUser($number);

Таким образом, сайт вызова остается "нормальным", в то время как реализация getUser может использовать $number как, например, индекс в массив, а также добиться большей ясности.

1
Jon 21 Июн 2014 в 22:50

Это называется ООП-программированием, оно используется, скорее всего, в любой большой системе. Он также часто используется в приложении MVC. Подробнее о программировании ООП читайте здесь; http://www.php.net//manual/en/language.oop5 .php

Это выражение также можно использовать следующим образом;

$this->$name

Или даже дальше;

$this->name =& $name
$this->name = $${val}
0
Tosfera 21 Июн 2014 в 22:49

Невозможно использовать символ $ в качестве имени функции. Но с другой стороны $this->getUserNumber(); вы можете использовать внутри некоторого класса.

0
Facedown 21 Июн 2014 в 22:50

Вы также можете сделать это как

$number = "10";
$func = "getUser".$number ;
$this->$func();

Он вызовет некоторую функцию с именем

getUser10 ();

0
DWX 22 Июн 2014 в 00:16

Да, ты можешь это сделать:

   $methodName = 'getUser' . $number;
   $this->$methodName();
-1
Adrian B 21 Июн 2014 в 22:51