相关疑难解决方法(0)

关键字"use"如何在PHP中工作,我可以用它导入类吗?

我有一个类的文件Resp.路径是:

C:\xampp\htdocs\One\Classes\Resp.php
Run Code Online (Sandbox Code Playgroud)

index.php在这个目录中有一个文件:

C:\xampp\htdocs\Two\Http\index.php
Run Code Online (Sandbox Code Playgroud)

在这个index.php文件中,我想实例化一个类Resp.

$a = new Resp();
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用requireinclude关键字包含一个类的文件:

require("One\Classes\Resp.php");       // I've set the include_path correctly already ";C:\xampp\htdocs". It works.
$a = new Resp();
Run Code Online (Sandbox Code Playgroud)

但我想导入类而不使用requireinclude.我试图了解use关键字的工作原理.我尝试了这些步骤,但没有任何作用:

use One\Classes\Resp;
use xampp\htdocs\One\Classes\Resp;
use htdocs\One\Classes\Resp;
use One\Classes;
use htdocs\One\Classes;    /* nothing works */

$a = new Resp();
Run Code Online (Sandbox Code Playgroud)

它说:

Fatal error: Class 'One\Classes\Resp' not found in C:\xampp\htdocs\Two\Http\index.php
Run Code Online (Sandbox Code Playgroud)

关键字如何use运作?我可以用它来导入课程吗?

php import include

126
推荐指数
5
解决办法
15万
查看次数

命名空间Autoload在Windows下运行,但在Linux上运行

我有以下PHP代码:

的index.php

<?php
spl_autoload_extensions(".php");
spl_autoload_register();

use modules\standard as std;

$handler = new std\handler();
$handler->delegate();
?>
Run Code Online (Sandbox Code Playgroud)

模块\标准\ handler.php

<?php
namespace modules\standard {
    class handler {
        function delegate(){
            echo 'Hello from delegation!';
        }
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

在运行WAMP的Windows 7下,代码生成消息"Hello from Delegation!" 但是在Linux下,我得到以下内容:

致命错误:spl_autoload():无法在第15行的/var/www/index.php中加载类modules\standard\handler

Windows在WAMP下运行PHP 5.3.0,Linux在Ubuntu 9.10下运行5.3.2 dotdeb软件包.

这是我的linux机箱上的配置问题,还是在不同操作系统上处理命名空间和自动加载的方式不同

php namespaces autoload

11
推荐指数
1
解决办法
6419
查看次数

标签 统计

php ×2

autoload ×1

import ×1

include ×1

namespaces ×1