2016-09-21 15 views
0

これは、コアPHPを使用してWebアプリケーションを開発し、フレームワークを使用せずに可能な限りベストプラクティスに従うという長い道のりです。私は自分のプロジェクトをより良い方法で構成することによって多くのことを達成しました。しかし、...クリーンなURLを取得することは、大きなアプリではしばしば問題になります。Slim as Architectureを使用してゼロからPHP Webアプリケーションを作成する

これまでのところ、私はスリムフレームワークを使って、自分のWebアプリケーションの外にRESTFULサービスを作成しました。

私は、Slim Frameworkを使用してPHPプロジェクト用のAPIを作成しています。さて、私はSlimをインストールして正常に動作しています。私は自分のルートをデータベースと話し、彼らがやろうとしていることを一般的にやっています。私の質問は、コードをモジュール化することと関係しています。現時点では、すべてのルートはルートディレクトリのindex.phpファイルで定義されています。私は非常にこれらを分離することを望んで、/コントローラフォルダに言う。

Slimがかなり良いURLを作成する方法が好きだったので...私のアプリアーキテクチャとしてSlimを使用することが可能かどうか、Slim index.phpを通してすべてのページやAPIにアクセスできるようにしていますか?

+0

スリムな骨格の1つにインスピレーションを与えるかもしれません。 –

答えて

1

はい、私は最近のプロジェクトで取った手順はかなり簡単です。

まず、あなたはあなたがDC

にあなたが持っているコントローラを追加する必要があるので、あなたがルートからこのコントローラのインスタンスを呼び出すことができるようにする必要があります今HomeActionController

class HomeActionController { 

    //The below line I have moved into an abstract Controller class 
    public $view = null; 

    //This is using Slim Views PhpRenderer 
    //This allows for a controller to render views can be whatever you need 
    //I did not like the idea of passing the whole DC it seemed overkill 
    //The below method I have moved into an abstract Controller class 
    public function __construct(\Slim\Views\PhpRenderer $view = null){   
     if($view != null){ 
      $this->view = $view; 
     } 
    } 

    //View could be any action method you want to call it. 
    public function view(Request $request, Response $response, array $args){ 
     $data['user'] = "John Doe"; 
     return $this->view->render($response, 'templates/home.php', $data); 
    } 
} 

を持って言うことができます音符の上のインスタンスのよう

$app = new \Slim\App($config['slim']); 

// Get Dependency Container for Slim 
$container = $app->getContainer(); 

$container['HomeActionController'] = new Controller\HomeActionController($container['view']); //Notice passing the view 

:あなたがスリムのインスタンスを作成している今までどこでDCを取得し、コントローラのインスタンスを追加する必要があります。閉鎖されている可能性がありますが、私はその時点でポイントを見たり、それらを作っていませんでした。また、まだ検討していない遅延ロードを行う方法があります。詳細はhereを参照してください。

最後にする必要があることは、大きな難題ではないルートでこれらを呼び出すことができることです。確かに

$app->get('/home', 'HomeActionController:view'); 

あなたはパラメータを使用してアクションを持つことはできませんが、私は問題ばかり要求でそれらを一緒に渡し、そこからそれらを取得するがありませんでした。

+0

どのスリムバージョンを使用していますか。 –

+0

私は最新の3つのものを手にしています。 – nerdlyist

1

あなたがいないフレームワークでアプリを作成したい場合は、私はこの小さなGitHubのレポを見推薦: https://github.com/PatrickLouys/no-framework-tutorial

それはあなたと通り抜けるルーティングの面ですべてを設定、プラスすべてが行かせるだろうあなたの質問のようなパブリックフォルダ内のindex.phpを通して。

関連する問題