Update:
Казалось бы, что вы ищете способ влияния/изменить поведение функции, в том же образом date_default_timezone_set
влияет на поведении date
функций поперек доска. Ответ на это довольно прост: вы не можете ... на самом деле. Функции, о которых вы думаете, на самом деле не изменить другие функции. Они меняют runtime (ini настройки и т. П.), И это runtime, что другие функции используют для вычисления их соответствующих возвращаемых значений.
Подумайте об date_default_timezone_set
Как добраться на самолете: вы можете лететь в часть мира, расположенную в другом часовом поясе, и ваши биологические часы будут адаптированы (через некоторое время) к этому другому часовому поясу, вы даже установите свой часы по-разному. Но ваш дом, ваш день рождения и все остальное не меняются. Место, где вы находитесь в любой момент времени, является вашим «runtime», и оно подвержено изменениям. Эти изменения могут привести к себя/по-разному реагируют, но они на самом деле не изменится, кто вы ...
используя обычные функции, вы могли бы использовать static
переменные:
function firstname($name = null)
{
static $return = 'Default';
$return = $name ? $name : $return;
return $return;
}
function fullName($name)
{
return firstname().' '.$name;
}
//test:
echo fullName('foobar');//echoes Default foobar
firstname('Mr. ');
echo fullName('foobar');//echoes Mr. foobar
Но, по правде сказал, что это не хороший способ заниматься своим бизнесом. Его трудно поддерживать, трудно читать и подвергать ошибкам. Честно говоря, если вам нужны 2 бита данных, которые пользователь должен обеспечить, там действительно не ничего неправильно с просьбой пользователя для обоих значений:
function fullName($first, $last)
{
return $first.' '.$last;
}
Но тогда, зачем использовать функцию вообще?
В более общих чертах вы на самом деле ищете способ связать состояние с функциональностью. Как повезло: классы делают именно это (пара данных с методами). «лучше» или более логичный подход, то был бы:
class Name
{
protected $firstName = null;
protected $lastName = null;
public function __construct($first = 'Default', $last = null)
{
$this->firstName = $first;
$this->lastName = $last;
}
public function getFullName($last = null, $first = null)
{
if ($last) $this->lastName = $last;
if ($first) $this->firstName = $first;
return $first.' '.$last;
}
}
Дополнительным преимуществом классов здесь, хотя я не включил это в моем примере, является то, что вы можете проверки значения которые передаются методам, и вы можете отфильтровать недопустимый ввод. такие вещи, как is_string
, проверка правильности, filter_var
звонки и т. п. ...
Добавьте к этому, что, по мере роста вашего проекта, вы можете легко освоить данный класс, например добавить свойство protected $email = null
, а также сеттер, который выполняет filter_var($email, FILTER_VALIDATE_EMAIL)
, чтобы убедиться, что действительный адрес электронной почты установлен, и у вас есть себе хороший маленький контейнер данных, который может хранить всевозможные данные, относящиеся к человеку, так как он представлен в вашей БД и используется по остальной части вашего кода.
Будет ли кто-нибудь, пожалуйста, скажите мне, для чего нужны downvotes? –
Несмотря на то, что я не проголосовал: вопрос SO должен проявлять усилия с вашей стороны (будь то исследования или попытки кодирования), которые показывают, что вы на самом деле _tried_, чтобы получить то, что вам нужно. Вы просто показываете 2 функции, один из них пуст - из-за комментария '// code here', и, в основном, спрашивайте _« Какой код я могу здесь сделать для этого »_..., который мало что показывает в способ усилий, который вы, возможно, предприняли –