Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有什么最佳实践可以实例化一组类吗?_Php - Fatal编程技术网

Php 有什么最佳实践可以实例化一组类吗?

Php 有什么最佳实践可以实例化一组类吗?,php,Php,我正在制作一个小PHP软件,为了运行它,需要实例化一组类,如下所示: $database = new Database; //handle some kind of CRUD $someFunctions = new SomeFunction($database); //injecting the CRUD $someMoreFunctions = new SomeMoreFunctions($database, someFunctions); $evenMoreFun

我正在制作一个小PHP软件,为了运行它,需要实例化一组类,如下所示:

$database          = new Database; //handle some kind of CRUD
$someFunctions     = new SomeFunction($database); //injecting the CRUD
$someMoreFunctions = new SomeMoreFunctions($database, someFunctions);
$evenMoreFunctions = new EvenMoreFunctions($database);
$app               = new AppManager($someFunctions, someMoreFunctions, evenMoreFunctions);
.............

$app->oneFunction()->doSomething->doSomeMore(); //working with the app
$app = App::oneFunction($maybeARecordId);
$app->doSomething();
$app->doSomeMore();
$app->maybeASaveFunction();
我最终必须将所有类的实例化放在一个单独的文件或类中,以包括或实例化。目标是使所有实例化对使用应用程序的开发人员透明

我认为最好的方法是用户只需做如下操作:

$database          = new Database; //handle some kind of CRUD
$someFunctions     = new SomeFunction($database); //injecting the CRUD
$someMoreFunctions = new SomeMoreFunctions($database, someFunctions);
$evenMoreFunctions = new EvenMoreFunctions($database);
$app               = new AppManager($someFunctions, someMoreFunctions, evenMoreFunctions);
.............

$app->oneFunction()->doSomething->doSomeMore(); //working with the app
$app = App::oneFunction($maybeARecordId);
$app->doSomething();
$app->doSomeMore();
$app->maybeASaveFunction();
有没有关于如何做到这一点的最佳实践


谢谢。

您正在寻找的术语称为“依赖注入容器”或DIC。它将使用集合绑定为您创建实例。谢谢。这个概念对我来说是新的,我得读一读。