Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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文件的同级文件夹中定义时,PHP如何查找该类?我正在运行的php文件位于/examples文件夹中。该类文件位于/src/Fedex中 /examples/address validation.php用于设置类路径的use语句 use FedEx\AddressValidationService\Request; use FedEx\AddressValidationService\ComplexType; use FedEx\AddressValidationServi

当类在正在运行的.PHP文件的同级文件夹中定义时,PHP如何查找该类?我正在运行的php文件位于
/examples
文件夹中。该类文件位于
/src/Fedex

/examples/address validation.php
用于设置类路径的use语句

use FedEx\AddressValidationService\Request;
use FedEx\AddressValidationService\ComplexType;
use FedEx\AddressValidationService\SimpleType;

$addressValidationRequest = new ComplexType\AddressValidationRequest();
当我运行.php文件时,会出现以下未找到的错误:

Fatal error: Uncaught Error: Class 'FedEx\AddressValidationService\ComplexType\AddressValidationRequest' 
not found in C:\xampp\htdocs\php-fedex-api-wrapper\examples\address-validation.php

该类的位置位于
/src/FedEx/AddressValidationService
文件夹中。其中
/src
/examples
文件夹都位于同一父文件夹中。

您应该在composer autoloader中定义指向该类的路径,如果您有一个或如果您有自定义加载程序,您应该教该加载程序解析位于命名空间内的类
FedEx\AddressValidationService\Request

如果您在项目的根目录中定义了一个
composer.json
文件,那么您可以这样定义一个autloader

{
    "autoload": {
        "psr-4": {"FedEx\\": "./src/FedEx/"}
    }
}
之后,必须执行
composer dump autoload

  • 了解更多关于

如果您想创建自定义自动加载程序,但不想使用我极力推荐的Composer,您可以了解有关的更多信息,如果您有自定义加载程序,您应该在Composer autoloader中定义该类的路径,或者如果您有自定义加载程序,您应该教该加载程序解析位于命名空间
FedEx\AddressValidationService\Request

如果您在项目的根目录中定义了一个
composer.json
文件,那么您可以这样定义一个autloader

{
    "autoload": {
        "psr-4": {"FedEx\\": "./src/FedEx/"}
    }
}
之后,必须执行
composer dump autoload

  • 了解更多关于

如果你想创建一个自定义的自动加载程序,而你又不想使用我强烈推荐的Composer,你可以了解更多关于的信息,你应该使用
$\u SERVER['DOCUMENT\u ROOT']
来准确地解决这类问题。类的自动解析和文件的加载是通过一种称为autoload的机制完成的。你必须用autoload注册东西,然后你就可以使用它们了。Composer在帮助您生成注册表方面做得很好,并提供了各种方法将名称空间/类映射到文件系统。@JAAulde是对的。你必须先用autoload注册这些类。如果本地地址有问题,请使用dirname(_FILE__)来定义正确的位置。是否将此API与Composer autoloader一起使用?
use
语句仅设置一个短别名,因此不必每次都键入完整的命名空间;它们与类或文件加载无关。若要从其他文件加载代码,您需要将其加载到其他文件中,或者使用包含这些文件的工具(例如Composer的自动加载程序)。您应该使用
$\u SERVER['DOCUMENT\u ROOT']
来准确应对此类问题。通过一种称为autoload的机制自动解析类和加载文件。你必须用autoload注册东西,然后你就可以使用它们了。Composer在帮助您生成注册表方面做得很好,并提供了各种方法将名称空间/类映射到文件系统。@JAAulde是对的。你必须先用autoload注册这些类。如果本地地址有问题,请使用dirname(_FILE__)来定义正确的位置。是否将此API与Composer autoloader一起使用?
use
语句仅设置一个短别名,因此不必每次都键入完整的命名空间;它们与类或文件加载无关。要从其他文件加载代码,您需要将其加载到其他文件中,或者使用包含这些文件的工具(例如Composer的自动加载程序)。在原始示例文件中包括autoloader(bootstrap.php):您是否尝试在原始示例文件autoloader(bootstrap.php)中运行
Composer dump autoload
包括:您是否尝试运行
composer dump autoload