【发布时间】:2015-03-29 10:23:47
【问题描述】:
我有一个 Symfony 项目,我在其中添加了一些包含各种类的非 symfony php 文件。但是由于某种原因,在加载网站时没有加载这些类,即使 IDE 可以正确看到它们。
所以,我有一个需要其他课程的课程:
namespace rootspace\FrontBundle\Controller;
use rootspace\FrontBundle\Networks\TwitterOAuth;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
class TwitterController extends Controller
{
public function connectAction(){
// The TwitterOAuth instance
$connection = new TwitterOAuth('abc', '123');
}
}
然后是加载失败的类(需要另一个文件)
namespace rootspace\FrontBundle\Networks;
/* Load OAuth lib. You can find it at http://oauth.net */
//require_once('OAuth.php'); -- should this be commented out?
/**
* Twitter OAuth class
*/
class TwitterOAuth {
/* Contains the last HTTP status code returned. */
}
最后是第三个文件
namespace rootspace\FrontBundle\Networks;
use Symfony\Component\Config\Definition\Exception\Exception;
class OAuthConsumer
{
public $key;
public $secret;
}
(...)
我认为实际的文件名并不重要,对吧?也不是他们的结构? PhpStorm 可以正确查看所有类,我可以右键单击它们,但部署时会失败。
感谢您的帮助
编辑 - 整个错误信息显示
Attempted to load class "TwitterOAuth" from namespace "rootspace\FrontBundle\Networks" in D:\Dropbox\project\src\rootspace\FrontBundle\Controller\TwitterController.php line 15. Do you need to "use" it from another namespace?
【问题讨论】:
-
你使用作曲家吗?
-
对于自动加载,文件名需要匹配类名。你能发布你的错误信息吗?
-
是的,我使用作曲家。但我没有用它来创建类。我是不是该?我是 PHP 新手:|那么这是否意味着我需要在一个文件中只有一个类? TwitterOAuth 类位于同名文件中,但它包含更多类。 OAuthConsumer 在文件 OAuth.php 中。
标签: php symfony namespaces