我有一个关于重构遗留PHP应用程序以与PHP的PSR-4标准兼容的问题。我有一些类位于应用程序/类/文件夹,尚未正确命名空间,我想让他们直接自动加载时,我调用作曲家的供应商/autoload.php.我添加了一个名称空间根据\
谢谢
一月
注意事项:-
编辑:这是我的作曲家。json:
...
"autoload":{
"psr-4": {
"Myapp\\" : "Myapp"
}
},
...
但现在结构看起来像:
->Myapp
-->Classes
--->Module1
---->submodule.php
--->Module2
---->submodule2.php
--->Module3
---->submodule3.php
--->Config
---->config.db.php
->vendor
-->autoload.php
以下是我的问题:
当我尝试加载子模块时。php,这将依次加载子模块2。php和子模块3。php,它会告诉我子模块3。找不到php。子模块3的命名空间。php是Myapp\Classes\Module3,但它说找不到它
我想强制包含,config。db。php,在每次调用自动加载时。php
您可以通过创建自己的作曲家包来实现这一点,将其添加到您的私有git存储库中,并将该包添加到项目的composer.json文件中:
"require": {
"{your-vendor}/{package-name}": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:{your-vendor}/{package-name}.git"
}
],
完成此操作后,运行composer update
。
我现在明白了。但是源文件将不会驻留在/vendor文件夹中,这对我的情况没有问题。如果您想让您的文件自动加载,无论是哪个文件夹,只需将其添加到composer中的psr-4块。json,如果还没有,就创建它。在我的作曲家。json,我在顶层对象上有这个块,它添加了我想要自动加载的文件夹,还包括我想要包含的特定文件,比如某种类型的配置文件:
...
"autoload":{
"files": [
"somefolder/somefile.php"
],
"psr-4": {
"MyApp\\" : "MyApp"
}
},
...
这仅仅意味着composer应该自动加载驻留在MyApp目录中的文件,该目录也将具有MyApp的名称空间。
现在我的文件夹结构如下所示:
->MyApp
-->Classes
--->MyClass1.php --> namespace MyApp\Classes classname: MyClass1
-->Components
--->MyClass2.php --> namespace MyApp\Classes classname: MyClass2
->somefolder
-->somefile.php
->vendor
-->autoload.php
->index.php
所以,如果我想包括文件MyClass1.php在index.php,我将只添加它像:
include_once( __DIR__ . "/vendor/autoload.php");
use \MyApp\Classes\MyClass1;
$foo = new MyClass1();
$foo->bar();
希望能有帮助。
我正在将一组遗留应用程序升级到Spring Boot2.4.0,运行在OpenJDK8上,部署到Pivotal Cloud Foundry。 我将添加到我的和测试文件中: 仍然没有快乐--所有的测试都失败了。 我被我看到的其他链接弄糊涂了。这是的问题吗?我读到版本可能存在问题。我需要把它添加到我的应用程序吗?在升级之前,它从来不需要这种依赖关系:
我有一个非常古老的遗留Java应用程序,我想从C#中实现自动化。问题是我们没有应用程序的源代码,程序员早就离开了公司。我可能可以“反编译”这个文件。jar文件,但我也不是java程序员,我不认为访问源代码(没有注释)会让我走得更远。 到目前为止,我使用以下代码(我在循环中轮询,因为Java应用可能有多个实例),成功地(相当成功地)自动化了应用程序的登录对话框: 现在的问题是我无法获取Java窗口的
我面临的问题是,有一个服务,我必须调用,这是一个传统的Spring启动应用程序,而不是反应性的! 下面是一个示例endpoint,它接近上述遗留系统的想法: 我知道我不能用这个来实现真正的反应性善,有没有一个快乐的非阻塞和阻塞的媒介我可以在这里实现? 谢谢
现在我面临的问题是如何实现On-Prem和云应用程序之间的集成。我想了几个选择。 直接将消息从遗留的Tibco主题复制到。NET应用程序将消息发布到GCP中的pub/sub主题。我不是Tibco专家,不确定这是否得到支持。我找到了下面的链接,但不确定这是否适合我的用例。另外,客户想要离开Tibco,并且不确定数据中心上的遗留Tibco EMS是否支持下面的Tibco连接器功能。https://ww
虽然 Sequelize 自认为可以开箱即用, 但是如果你要使用应用之前遗留的资产和凭据,仅需要通过定义(否则生成)表和字段名称即可. 表 class User extends Model {} User.init({ // ... }, { modelName: 'user', tableName: 'users', sequelize, }); 字段 class MyModel
我和许多其他人一样,似乎很难弄清楚何时以及如何使用自动加载。我想我理解作曲家和PSR-0/PSR-4的概念和这需要的目录结构。但是如果我用自己的MVC框架构建自己的项目 > 由于composer自带了自动加载器,它将加载我希望包含在项目中的所有依赖项,如果我不打算将我的网站变成分布式项目,我甚至需要自己的名称空间吗?为什么我不坚持使用include/requires? 最后,如果我采用名称空间,使