Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel4中使用名称空间_Php_Namespaces_Laravel_Laravel 4 - Fatal编程技术网

Php 在Laravel4中使用名称空间

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

我不熟悉Laravel,通常使用PHP名称空间。在我决定创建一个名为File的模型之前,我没有遇到任何问题。如何正确使用名称空间,以便使用我的文件模型类


这些文件是
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-