speedphp关于命名空间的疑问

#1 slyjit

require_once __DIR__ . '/qiniusdk/autoload.php';

use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

$accessKey = '5aa';
$secretKey = 'Hdd';
$auth = new Auth($accessKey, $secretKey);
$bucket = 'yue';
$token = $auth->uploadToken($bucket);

$uploadMgr = new UploadManager();
$filePath = $_FILES['file']['tmp_name'];
$key = 'php-logo.png';
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
echo "\n====> putFile result: \n";
if ($err !== null) {
    var_dump($err);
} else {
    var_dump($ret);
}
这是我上传图片到七牛云存储的代码,直接访问是可以的;然后我想把这段代码放到SP框架来使用:
function photoups(){
                import('./SpeedPHP/Extensions/qiniusdk/autoload.php');
                use Qiniu\Auth;
                use Qiniu\Storage\UploadManager;
                $accessKey = '5dd';
                $secretKey = 'Hrcc';
                $auth = spClass('Auth',array($accessKey,$secretKey));
                $bucket = 'yue';
                $token = $auth->uploadToken($bucket);
               
                $uploadMgr =  spClass('UploadManager');
                $filePath = $_FILES['file']['tmp_name'];
                $key = 'php-logo2.png';
                list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
                echo "\n====> putFile result: \n";
                if ($err !== null) {
                                var_dump($err);
                } else {
                                var_dump($ret);
                }
        }
在使用 use Qiniu\Auth; 时候,Parse error: syntax error, unexpected T_USE in controller/main.php on line 20
use Qiniu\Auth所在行就是20行;不知到问题出在何处?


2015-10-23 17:31:13

#2 slyjit

看上去是语法错误,和SP没关系;但是我正常访问文件又不报语法错误

2015-10-23 17:37:48

#3 slyjit

JACK玩七牛存储嘛:lol

2015-10-23 17:38:29

#4 jake

报这个错应该是找不到use里面对应的文件

那么我看应该是import路径不对,所以没把正确的文件载入进来。

2015-10-23 22:52:17

#5 slyjit

jake 发表于 2015-10-23 22:52
报这个错应该是找不到use里面对应的文件

那么我看应该是import路径不对,所以没把正确的文件载入进来。 ...
import路径应该是正确的,我在autoload.php 里打印字符可以看到   

2015-10-24 09:11:55

#6 jake

还是提示看,应该说的是use这语法不懂,是不是用了没有支持use的php版本?

别说什么不是框架内就成功,这里只是看提示说话而已,

2015-10-24 21:42:57

#7 slyjit

jake 发表于 2015-10-24 21:42
还是提示看,应该说的是use这语法不懂,是不是用了没有支持use的php版本?

别说什么不是框架内就成功,这 ...
嗯;不是框架的原因;再次排查,发现use不能在函数里使用;不知道什么原因,我还在看;不知道有没有什么办法解决没有,还是我写法上出了问题

2015-10-26 10:48:58

#8 jake

slyjit 发表于 2015-10-26 10:48
嗯;不是框架的原因;再次排查,发现use不能在函数里使用;不知道什么原因,我还在看;不知道有没有什么 ...
看看这个 http://cn.php.net/manual/zh/language.namespaces.importing.phplanguage.namespaces.importing.scope

use是需要在最外层使用的,也就是不能在类或者函数里面使用。因为use是编译期执行,而不是运行期执行。

2015-10-26 11:01:59

#9 slyjit

多谢J大,受教了。

2015-10-26 11:24:34