У меня есть другая перспектива ответить на это.
При работе на разных уровнях, например, в приложении MVC, контроллеру нужны службы для вызова бизнес-операций. В таких сценариях контейнер инжекции зависимостей может использоваться для инициализации служб, чтобы исключить исключение NullReferenceException. Это означает, что вам не нужно беспокоиться о проверке нулевого значения и просто вызвать службы с контроллера, как будто они всегда будут доступны (и инициализированы) как одиночный или прототип.
public class MyController
{
private ServiceA serviceA;
private ServiceB serviceB;
public MyController(ServiceA serviceA, ServiceB serviceB)
{
this.serviceA = serviceA;
this.serviceB = serviceB;
}
public void MyMethod()
{
// We don't need to check null because the dependency injection container
// injects it, provided you took care of bootstrapping it.
var someObject = serviceA.DoThis();
}
}
Вы не можете просто пропустить аргумент в PHP.
Возможно, вы захотите рассмотреть трюк Perl и использовать связанный массив. Используйте array_merge
для объединения параметров со значениями по умолчанию.
, например
function Test($parameters = null)
{
$defaults = array('color' => 'red', 'otherparm' => 5);
if ($parameters == null)
{
$parameters = $defaults;
}
else
{
$parameters = array_merge($defaults, $parameters);
}
}
Затем вызовите функцию, подобную этой
Test(array('otherparm' => 7));
Переопределите свою функцию как
function test($b = true,$a = NULL){
//logic here
}
И вы можете назвать ее как тест (5); избегая второго параметра.
Вы должны использовать формат, определенный моими стандартами функций PHP
test("",false);
Требование, которое вы работаете с библиотеками jquery ... для аргументов, передаваемых в его функциях. Но НЕ в PHP
Вы можете изменить положение аргументов или передать аргументы в виде массива для exmaple:
test($options);