2017-03-19 112 views
0

我使用autoloader.php使用composer.json負載自動加載只有一次

"autoload": { 
    "classmap": [ 

     ], 
     "psr-4": { 
      "App\\": "app/", 
      "App\\Helpers\\": "app/lib/Helpers", 
      "App\\Traits\\": "app/Traits", 

     } 
    } 

和我的index.php index.php中使用對象有

<?php 
require_once 'vendor/autoload.php'; 

如果accss任何類別工作很好。現在我的問題是我必須在每個類中加載require_once 'vendor/autoload.php';才能正常工作。有任何方法在啓動時只添加一次。

例如

<?php 
require_once 'vendor/autoload.php'; 

use App\Controllers\HomeController; 

$myclass = new HomeController(); 
$myclass->index(); 

上面的代碼工作,因爲我已經使用require_once '供應商/ autoload.php' ;.我在另一個目錄中創建了另一個文件

<?php 
namespace App\test; 

use App\Controllers\HomeController; 

$myclass = new HomeController(); 
$myclass->index(); 

這裏我還添加了一次需要一次。現在m試圖避免包括每一次包括autoload.php 謝謝

回答

0

你只需要在你的應用程序中包括一次Composer自動加載器。 一個好的地方是index.php文件,該文件充當您的應用程序的中心入口點。

index.php

<?php 
require_once 'vendor/autoload.php'; 

// handle the $_GET parameters (e.g. `index.php?controller=home&action=index`) 
// translate them to your controller object 
// then call the controller and action requested 
// hardcoded for now: 

$controller = new \App\Controllers\HomeController(); 
$controller->index(); 

HomeController.php

<?php 
// this controller is instantiated after `index.php`, 
// 'index.php' loaded the Composer Autoloader already. 
// Autoloading is available at this point. 
// There is no need to set it up again. 

namespace App\Controllers; 

class HomeController 
{ 
    public function index() 
    { 
     echo 'Hello from HomeController->index()'; 
    } 
}