有没有办法在类的开头包含一个文件,供所有方法使用。下面的例子是我试图实现的目标的简化版本。目前,我必须在每个方法中都包含该文件。
示例逻辑(不工作)
class Myclass
{
protected require_once 'folerd1/folder2/pear/HTTP/Request2.php'; // this does not work
public function aMethod()
{
$request = new HTTP_Request2('http://example1.com/', HTTP_Request2::METHOD_GET);
try {
$response = $request->send();
if (200 == $response->getStatus()) {
echo $response->getBody();
} else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
} catch (HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
}
public function aMethod1()
{
$request = new HTTP_Request2('http://example2.com/', HTTP_Request2::METHOD_GET);
try {
$response = $request->send();
if (200 == $response->getStatus()) {
echo $response->getBody();
} else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
} catch (HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
}
// more methods
}
2溶液
1) require_从类中取出一次
require_once 'folerd1/folder2/pear/HTTP/Request2.php';
class Myclass
{
2) 包含在构造中
public function __construct() {
require_once 'folerd1/folder2/pear/HTTP/Request2.php';
}
但它是更好的第一个选项
最好的方法是查看自动加载标准http://www.php-fig.org/psr/psr-0/
你试过这个吗?我不知道您的Request2.php文件内容是什么。所以我的代码只是一个PoC!
require 'folerd1/folder2/pear/HTTP/Request2.php';
class Myclass
{
public function aMethod()
{
$request = new Request2('http://example1.com/', Request2::METHOD_GET);
try {
$response = $request->send();
if (200 == $response->getStatus()) {
echo $response->getBody();
} else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
} catch (Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
}
public function aMethod1()
{
$request = new Request2('http://example2.com/', Request2::METHOD_GET);
try {
$response = $request->send();
if (200 == $response->getStatus()) {
echo $response->getBody();
} else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
} catch (Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
}
}
正如我所评论的,只需要PHP类的构造函数中的文件:
class Myclass{
function Myclass(){
require_once('folerd1/folder2/pear/HTTP/Request2.php');
}
我还没有检查过这一点,但您所做的可能不仅仅是让所有类都能看到它,而是让整个脚本都能看到。如果这对你来说是个问题,请检查一下。否则,其他两个解决方案可能也会这样做。
干杯