问题标签 [psr-0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1079 浏览

php - 通过 composer 自动加载多个 PHP 项目

假设我的文件夹布局为

这些项目需要处于同一级别,并且需要彼此共存,例如projectA可能使用来自projectBand的代码projectC,反之亦然,因此不能将它们放入vendor文件夹中。

问题是:autoload.php在每个项目中都能够自动加载自己的src文件vendor夹,但是如何为其他项目自动加载呢?

假设他们邻居的项目将文件夹名称作为 PHP 命名空间,是否可以设置一个 autoload.php(通过作曲家),以便将来当我添加新项目文件夹时,自动加载会神奇地工作?

0 投票
1 回答
867 浏览

php - 我应该总是在 PHP 中使用完全限定的类名吗?

我看到一些示例代码,例如

为什么不总是使用完全限定的类名呢?

所以你不必担心这个文件是否在任何命名空间中使用,对吧?

0 投票
1 回答
1296 浏览

php - 同时使用 Composer 自动加载两个供应商项目

我有两个项目(project1,project2)正确设置了composer,有自己的composer.json

现在,在另一个 php 文件中,我通过

我得到了错误

是 wp-cli 的问题还是 composer 的问题?我已经尝试过使用另一个库,例如 monolog,这很好。

任何想法?

0 投票
1 回答
1009 浏览

php - 自定义命名空间的 Composer psr-0 自动加载不起作用

我无法使用 PSR-0 将自己的命名空间添加到作曲家。我已经阅读了这个这个,但我仍然无法让它工作

作曲家.json

src文件夹位于与composer.json

src目录具有以下结构

键.php

索引.php

0 投票
0 回答
445 浏览

refactoring - phpstorm 移动类而不打开文件

是否可以在 phpstorm 中移动类而无需打开类文件,选择类名并按 F6 ???

我已经定义了 PSR0 源根,但它似乎与问题有关

使用 intellij idea,您可以抓取类并将其放入您想要的任何包中,它会更新命名空间

谢谢

0 投票
2 回答
2199 浏览

composer-php - 在 composer.json 中使用 PSR-0 不会加载我的类

composer.json我有以下数据:

lib文件夹位于文件夹旁边vendor。在 lib 我有一个名为的类Decorator.php,我的类名Decorator如下:

我跑去php compooser.phar update得到消息Nothing to install or update blah blah blah

为了更好地理解,这是项目文件夹结构的一部分:

文件夹结构

现在,当我想实例化我的课程时,我无法访问我的课程。

0 投票
2 回答
2550 浏览

php - 如何使用 NetBeans IDE 组织 PHPUnit 测试和自动加载

有自动加载规则(http://www.php-fig.org/psr/psr-0/)和 PHPunit 测试(https://phpunit.de/manual/current/en/organizing-tests.html)。分开它们很容易实现,但组合起来却不是。

我还阅读了一个 PHPUnit 最佳实践来组织测试的主题,但应用答案对我来说并不明显。编写我自己的项目时,我遇到了几个问题,这些问题可能与代码组织的起源相同。我希望我能有一个真正简单的例子的食谱。因此,我提出了很大的问题。

示例项目

我使用NetBeans IDE 7.4因为它支持 PHPUnit、SVN 和 Doxygen(但我缺乏使用该 IDE 的经验)。

项目属性

  • 项目文件夹:C:\xampp\htdocs\myapps\PhpProject1
  • 源文件夹:C:\xampp\htdocs\myapps\PhpProject1
  • 测试文件夹:C:\xampp\htdocs\myapps\PhpProject1\tests

有第一个问题。NetBeans 从一开始就阻止了镜像 src/tests 结构。Source Folder没有Browse按钮​​。Test 文件夹必须不同于Source 文件夹。

我使用位于项目外部的 PHAR 文件中的 PHPUnit 和 skelgen。(工具->选项->PHP/PHPUnit

  • PHPUnit 脚本:C:\xampp\phar\phpunit.phar
  • 骨架生成器脚本:C:\xampp\phar\phpunit-skelgen-1.2.1.phar

我在项目目录中有以下文件结构

wheresrc不是命名空间,因为

  • 文件src/MyPack/Foo/Bar.php包含类MyPack\Foo\Bar
  • 文件src/MyPack/Quu/Baz.php包含类MyPack\Qoo\Baz
  • 文件src/Client.php 包含类Client

srcAutoload.php包含来自https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md的修改后的 PSR-0 自动加载实现。不同之处在于在执行require()PSR-0 文件名之前以src/

测试生成和自动加载问题

我为和类使用了工具/创建测试(从上下文菜单中),最终得到以下结构BarBaz

这绝对不是镜像对称的。此外,生成的测试不知道如何加载他们正在测试的类。

我的自动加载解决方法

如前所述,测试运行器的工作目录与项目不同。所以用于测试的自动加载器应该创建不同的完整文件名。我复制了 PSR-0 自动加载器,将其另存为tests/srcAutoloadFromTests.php并添加了另一个前缀

之后,我添加了Use Bootstrap (Project Properties->Testing/PHPUnit )。文件tests/bootstrap.php包含:

这个解决方案使 PHPUnit 执行测试,但对我来说看起来很丑。

更具体的问题

为什么镜像src/tests/自动加载没有帮助?

我通过创建正确的文件夹和移动文件手动创建了镜像结构:

根据https://phpunit.de/manual/current/en/organizing-tests.html PHPUnit可以通过递归遍历测试目录自动发现和运行测试。它对我不起作用。如果没有我srcAutoloadFromTests.php,我会得到与以前的非镜像结构相同的错误。

自动加载代码重复怎么办

因为 NetBeans 不允许将源文件夹用作测试文件夹,所以我必须为同一个类设置两个自动加载器。我不确定这是否是一个好习惯。

自动加载不应该打扰其他从事同一项目的程序员。我寻找更通用的东西。

此外,将来我可以使用第三方代码。他们的自动装载机也需要复制吗?

src/和文件夹是否应该tests/是顶级的vendor/

我前段时间一直在学习自动加载规则。现在我发现 PSR-0 根据 PSR-4 被标记为已弃用src/tests/应该放在路径中间的某个地方。

但是有一种做法是将第三方代码放在顶级vendor/文件夹中。src/和文件夹不tests/应该放在同一级别。

这使得整个结构更具PSR-0风格

NetBeans 中没有提示 PHPUnit

在编写 BazTest 和 BarTest 代码时,NetBeans IDE 不会提示 PHPUnit 方法,尽管这两个类都扩展\PHPUnit_Framework_TestCase

是因为我使用 PHAR 的 PHPUnit 吗?

我希望引用这个例子能让我的问题更清楚。感谢您的阅读,我寻求好的建议

0 投票
1 回答
4480 浏览

php - 找不到类问题(作曲家,PHPUnit)

从 PHPUnit 获取以下错误:

我的结构是这样的:

通过作曲家完成自动加载:

尝试使用 PSR0、PSR2、PSR4、...

MoneyTest 类:

金钱类:

为什么它试图加载 FoobarTest\Money\Money而不是Foobar\Money\Money

0 投票
1 回答
2971 浏览

php - 如何使用 Composer 从本地存储库加载 php 类?

我是 Php 和 Composer 的新手,我想使用 Composer 将 Php 类访问到另一个模块,这是我的基本项目结构(两个模块 common 和 worker)index.php

常见/供应商/画布/test.php

普通/作曲家.json

工人/作曲家.json

工人/tempcaller.php

我也无法使用 psr-0 或存储库来做到这一点,有什么方法可以做到这一点吗?

0 投票
1 回答
648 浏览

php - 带有类、命名空间和 psr-0 自动加载的 Wordpress 插件

我对这个 Wordpress 很陌生,现在我已经制作了自己的主题,并想创建一个插件来处理我的幻灯片。

(稍后我必须为一些学生教这个,所以我不能只使用现有的插件)

我已经从底部的http://www.php-fig.org/psr/psr-0实现了自动加载器,它工作正常。

我可以调用我班级中的所有方法和所有内容,这很好。这是实际的问题:

当。。。的时候

被调用,然后它运行该方法

但 dbDelta() 是一个未定义的函数。我可以看到它试图在函数前面设置命名空间(我不知道为什么,因为它不是类方法,而是一个函数,对吧?)。无论如何,我试过这样称呼它

这似乎有效,但它仍然找不到该功能。我可以在课堂上手动要求 dbDelta 还是有其他问题?

对不起,很长的问题......

乌尔里克·麦卡德尔