douzhi3776 2016-10-06 09:12
浏览 28
已采纳

Docker php与作曲家PSR-4

Im trying to publish my webpage using docker on my nas. But Can't get the PSR-4 to work, it wont find the controllers through the namespacing. Everything worked on my vagrant box. But as long as I don't extend a class it wont break

Whoops \ Exception \ ErrorException (E_ERROR) Class 'Rsubscribe\Controllers\BaseController' not found

bootstrap/start.php

require(__DIR__ . "/../vendor/autoload.php");
session_start();  
$router = new AltoRouter();

BaseController

<?php
namespace Rsubscribe\Controllers;

use duncan3dc\Laravel\BladeInstance;

class BaseController{
    protected $blade;

    public function __construct()
    {
        $this->blade = new BladeInstance("/var/www/views", "/var/www/cache/views");
    }
}

PageController

class PageController extends BaseController
{
    public function getShowHomePage()
    {
        echo $this->blade->render("home");
    }

    public function getMoviePage()
    {
        echo $this->blade->render('movies');
    }
}

Routes:

<?php        
    use duncan3dc\Laravel\BladeInstance; // Temp
    $router->map("GET", "/", "Rsubscribe\controllers\PageController@getShowHomePage", "home");
    $router->map("GET", "/home", "Rsubscribe\controllers\PageController@getShowHomePage", "home_2");
    $router->map("GET", "/movies", "Rsubscribe\controllers\PageController@getMoviePage", "movies");

composer.json

 .....
 .....
 "autoload": {
        "psr-4": {"Rsubscribe\\": "src/"}
    }
  • 写回答

1条回答 默认 最新

  • duancha1065 2016-10-06 12:49
    关注

    The problem was that the namespace was Case sensitivity running on linux server but not when running on my osx machine for some reason. The folders is in lowercase and must therefore be lowercase in the namespaces too.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?