Php 在Laravel4中使用名称空间
我不熟悉Laravel,通常使用PHP名称空间。在我决定创建一个名为File的模型之前,我没有遇到任何问题。如何正确使用名称空间,以便使用我的文件模型类Php 在Laravel4中使用名称空间,php,namespaces,laravel,laravel-4,Php,Namespaces,Laravel,Laravel 4,我不熟悉Laravel,通常使用PHP名称空间。在我决定创建一个名为File的模型之前,我没有遇到任何问题。如何正确使用名称空间,以便使用我的文件模型类 这些文件是app/controllers/filecontroller.php和app/models/File.php。我正在尝试在filecontroller.php中创建一个新的文件,首先,用以下内容加载您的类: $ composer dump-autoload 然后 打开后,在模型类的顶部为模型命名 然后,当您从控制器调用时,您将调用n
这些文件是
app/controllers/filecontroller.php
和app/models/File.php
。我正在尝试在filecontroller.php
中创建一个新的文件
,首先,用以下内容加载您的类:
$ composer dump-autoload
然后
打开后,在模型类的顶部为模型命名 然后,当您从控制器调用时,您将调用new which\Model
您可能需要在第一次使用composer进行转储自动加载 一旦掌握了其中的诀窍,名称空间就非常容易了 以以下为例: app/models/File.php app/controllers/FileController.php 声明名称空间:
namespace App\Controllers;
use App\Models\File;
记住,一旦您将一个类放在一个名称空间中以访问PHP的任何内置类,您就需要从根名称空间调用它们。e、 g:$stdClass=newstdclass()代码>将变成$stdClass=new\stdClass()代码>(请参阅\
)
导入其他名称空间:
namespace App\Controllers;
use App\Models\File;
这允许您使用文件
类而不使用名称空间前缀
或者,您也可以拨打:
$file = new App\Models\File();
但最好的做法是将其放在use
语句的顶部,这样您就可以看到所有文件的依赖项,而无需扫描代码
完成后,您需要运行composer dump autoload
来更新composer的autoload函数,以考虑新添加的类
请记住,如果要通过URL访问FileController,则需要定义路由并指定完整命名空间,如下所示:
Route::get('file', 'App\\Controllers\\FileController@someMethod');
将所有GET/file请求定向到控制器的someMethod()
请查看上的PHP文档,Nettut的文章始终是一个很好的参考资料。。希望你能澄清你的疑问
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\users;
class UserController extends Controller{
public function actionIndex()
{
echo "working on .....";
}
}
名称空间定义在打开PHP脚本标记之后的PHP类顶部,如下所示:
<?php
namespace MyNameSpace;
new MyNameSpace\PhpClass;
<?php
//namespace
use MyNameSpace\MyPHPClass;
//then later on the code you can instantiate the class normally
$myphpclass = new MyPHPClass();
或者在文件顶部导入它(在名称空间之后,如果存在),如下所示:
<?php
namespace MyNameSpace;
new MyNameSpace\PhpClass;
<?php
//namespace
use MyNameSpace\MyPHPClass;
//then later on the code you can instantiate the class normally
$myphpclass = new MyPHPClass();
@Josh Hollowway如果让FileController扩展BaseController,则此操作将失败,并出现找不到BaseController的错误,您如何解决此问题?您需要从根命名空间中使用\引用BaseController,如下所示:\BaseControlleri遵循上述过程,但最后我得到了错误:找不到类'App\Controllers\BaseController'。在生成\BaseController后,我得到错误:类FileController不存在。我也做作曲家转储-autoload@JoshHolloway有没有可能使用extends的示例?@Zehelvion-