上の画像であなたは私のを見ることができますcomposer.json
。このファイルはFreya / Loader / Assetsに属しており、展開されていることがわかります。
また、ベンダーディレクトリが作成され、次のようなphpunit.xmlファイルがあることもわかります。
<phpunit
bootstrap="bootstrap.php"
backupGlobals="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
>
<testsuites>
<testsuite>
<directory suffix="Test.php">./tests</directory>
</testsuite>
</testsuites>
</phpunit>
phpunit
このディレクトリにいるときにターミナルで実行すると、次のエラーが発生します。
PHP Fatal error: Class 'AssetLoader' not found in /vagrant/Freya/Loader/Assets/tests/AssetsTest.php on line 18
テストは次のようになります。
<?php
use Freya\Loader\Assets;
class AssetsTest extends WP_UnitTestCase {
public function testAssetsAreRegistered() {
// $assetsToregister = array(
// 'css' => array(
// 'some_file' => 'http://example.com'
// ),
// 'js' => array(
// 'some_file' => 'http://example.com'
// )
// 'front_jquery_version' => '2.7.1'
// );
$assets = new AssetLoader();
var_dump($assets->getAssets());
}
}
このファイルが必要ない理由がわかりません。私はpsr-4
標準を使用していますが、私が知る限り、composerファイルに問題はありません。クラスはドキュメントでかなり長いので、名前空間とクラス定義を表示するためにシェルを貼り付けてください。
AssetLoader.php
<?php
namespace Freya\Loader\Assets;
class AssetLoader { ... }
**私は何か見落としてますか?何か間違ったタイプですか?すべてが私には正しいように見えます... **
要求に応じて、ブートストラップファイルを参照してください。
<?php
/** ---------------------------------------------------- **/
// Require the vendors autoload file.
/** ---------------------------------------------------- **/
require_once 'vendor/autoload.php';
/** ---------------------------------------------------- **/
// We neeed WordPress Bootstrap files for its test.
/** ---------------------------------------------------- **/
define('WP_TEST_DIR', parse_ini_file('test-config.ini')['test-location']);
// Include the bootstrap file.
require_once WP_TEST_DIR . 'includes/bootstrap.php';
// Include the Functions file
require_once WP_TEST_DIR . 'includes/functions.php';
だからcomposer dump-autoload
誰かが私がやったことを実行することを提案しました、そして私はphpunitを実行しました、そして私は同じ問題を抱えました:
$ composer dump-autoload
Generating autoload files
$ phpunit
Configuration read from /vagrant/Freya/Loader/Assets/phpunit.xml
PHP Fatal error: Class 'AssetLoader' not found in /vagrant/Freya/Loader/Assets/tests/AssetsTest.php on line 18
PHP Stack trace:
PHP 1. {main}() /usr/local/bin/phpunit:0
PHP 2. PHPUnit_TextUI_Command::main() /usr/local/bin/phpunit:535
PHP 3. PHPUnit_TextUI_Command->run() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:105
PHP 4. PHPUnit_TextUI_TestRunner->doRun() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:153
PHP 5. PHPUnit_Framework_TestSuite->run() phar:///usr/local/bin/phpunit/phpunit/TextUI/TestRunner.php:406
PHP 6. PHPUnit_Framework_TestSuite->run() phar:///usr/local/bin/phpunit/phpunit/Framework/TestSuite.php:722
PHP 7. PHPUnit_Framework_TestCase->run() phar:///usr/local/bin/phpunit/phpunit/Framework/TestSuite.php:722
PHP 8. PHPUnit_Framework_TestResult->run() phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php:699
PHP 9. PHPUnit_Framework_TestCase->runBare() phar:///usr/local/bin/phpunit/phpunit/Framework/TestResult.php:609
PHP 10. PHPUnit_Framework_TestCase->runTest() phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php:743
PHP 11. ReflectionMethod->invokeArgs() phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php:866
PHP 12. AssetsTest->testAssetsAreRegistered() phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php:866
Fatal error: Class 'AssetLoader' not found in /vagrant/Freya/Loader/Assets/tests/AssetsTest.php on line 18
Call Stack:
0.0007 389896 1. {main}() /usr/local/bin/phpunit:0
0.0789 13012000 2. PHPUnit_TextUI_Command::main() /usr/local/bin/phpunit:535
0.0789 13012648 3. PHPUnit_TextUI_Command->run() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:105
1.6249 38992520 4. PHPUnit_TextUI_TestRunner->doRun() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:153
1.6292 39003688 5. PHPUnit_Framework_TestSuite->run() phar:///usr/local/bin/phpunit/phpunit/TextUI/TestRunner.php:406
1.6294 39007208 6. PHPUnit_Framework_TestSuite->run() phar:///usr/local/bin/phpunit/phpunit/Framework/TestSuite.php:722
1.6305 39011272 7. PHPUnit_Framework_TestCase->run() phar:///usr/local/bin/phpunit/phpunit/Framework/TestSuite.php:722
1.6305 39012816 8. PHPUnit_Framework_TestResult->run() phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php:699
1.6306 39015248 9. PHPUnit_Framework_TestCase->runBare() phar:///usr/local/bin/phpunit/phpunit/Framework/TestResult.php:609
1.6409 39068824 10. PHPUnit_Framework_TestCase->runTest() phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php:743
1.6409 39069592 11. ReflectionMethod->invokeArgs() phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php:866
1.6410 39069672 12. AssetsTest->testAssetsAreRegistered() phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php:866
use Freya\Loader\Assets;
これは、他の言語から慣れているように、「この名前空間からすべてをインポートする」という意味ではありません。PHPでは、この唯一の手段:別名Freya\Loader\Assets
にAssets
このファイルインチ
これは、new AssetsLoader()
それでもグローバルスコープからロードしようとすることを意味します(そのためAssetsLoader
、ではなく、クラスに見つからないというメッセージが表示されますFreya\Loader\Assets\AssetsLoader
)。
これを機能させるにnew Assets\AssetsLoader()
は、(を覚えておいFreya\Loader\Assets
てくださいAssets
)またはuse Freya\Loader\Assets\AssetsLoader
(このように、AssetsLoader
このFQCNにエイリアスされます)を使用します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加