前提条件

このチュートリアルでは、DigitalOceanVPSにSlimFrameworkをインストールして構成するために必要な手順を説明します。 このチュートリアルを終了すると、プロジェクトのベースとなるフォルダー構造を備えた、適切に編成された、動作するSlimFrameworkのインスタンスが完成します。

このチュートリアルは、UbuntuにLAMP(またはお好みの)スタックがインストールされていることを前提としています。 そうでない場合は、UbuntuにLAMPスタックをインストールするのに役立つこの記事を参照してください。

アプリケーションがMySQLを使用しない場合は、そのインストールをスキップできます。 インストールする必要があるのは、Apache Webサーバー( with Mod_Rewrite )とPHP(最小5.3バージョン)です。

前提条件のクイックセットアップ

1. Apacheをインストールします

apt-get update  
apt-get install apache2

2. PHPをインストールする

apt-get install php5 libapache2-mod-php5 php5-mcrypt

3. 有効 mod_rewrite

a2enmod rewrite

4. Apache構成ファイルを変更します

Apache構成ファイルを変更し、ドキュメントルートの AllowOverrideNoneAllowOverrideAllに変更します。 サーバーの設定に応じて、この構成ファイルは次のいずれかになります。

  • /etc/apache2/apache2.conf
  • /etc/apache2/sites-enabled/000-default
  • /etc/apache2/sites-available/default

構成ファイルで、次のようなセクションを見つけます。

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

これを次のように変更して、ファイルを保存します。

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

5. Apacheを再起動します

service apache2 restart

このチュートリアルは、Linuxの基本に精通していることも前提としています。

スリムフレームワークとは何ですか?

Slimは、市場でPHPで利用できる最も人気のあるオープンソースのマイクロフレームワークの1つです。 それは非常に効率的で、速く、そして使いやすいです。 中小規模のWebアプリケーションの開発には理想的ですが、大規模でスケーラブルなPHPアプリケーションの構築にも非常に効果的に使用できます。

Slimには、フレームワークに期待される最も一般的なユーティリティが満載です。

  • 使いやすく、強力で柔軟なルーター
  • テンプレートをレンダリングするためのカスタムビュー
  • 安全なCookie
  • HTTPキャッシング
  • 使いやすいエラー処理とデバッグ
  • シンプルな構成

インストール

Slim Frameworkのインストールは、3つのステップで構成されています

  1. SlimFrameworkのダウンロード
  2. Zipファイルからの抽出
  3. SlimFrameworkを共通の場所にコピーする

1. SlimFrameworkをダウンロードする

次のコマンドを使用して、SlimFrameworkをダウンロードできます。

wget https://github.com/codeguy/Slim/zipball/master

これにより、フレームワークが zip ファイルを作成し、現在のディレクトリに名前を付けて保存します master.

2. Zipファイルから抽出

zipファイルの内容は、次のコマンドを使用して抽出できます。

unzip master -d ./

ノート: unzipがインストールされていないというエラーが発生した場合は、コマンドを使用してインストールできます apt-get install unzip 次に、上記のコマンドを実行して、すべてのファイルを抽出します。

上記のコマンドは、次のような名前のフォルダにファイルを抽出します codeguy-Slim-3a2ac72. このフォルダーには、フレームワークフォルダーであるSlimという名前のフォルダーが含まれています。

3. SlimFrameworkを共通の場所にコピーする

コピーします codeguy-Slim-3a2ac72/Slim 次のような一般的な場所へのフォルダ /usr/local/Slim Slimを使用するこのサーバー上のすべてのプロジェクトにアクセスできる場所から。 これにより、重複が回避され、重複インストールから発生する可能性のあるメンテナンスの問題が防止されます。

次のコマンドを使用してフォルダをコピーしましょう。

cp -r ./codeguy-Slim-3a2ac72/Slim /usr/local/Slim

ノート: 抽出したフォルダの名前(codeguy-Slim-3a2ac72 この場合)別のバージョンのSlimをダウンロードすると、わずかに異なる場合があります。 上記のコマンドでフォルダの名前を適宜変更してください

これが完了すると、SlimFrameworkを使用するすべてのプロジェクトがこの場所からそれを参照できるようになります。

重要な注意点: 多くのチュートリアルは、パブリックフォルダ/ドキュメントルートにフレームワークをインストールします( /var/www/Slim). パブリックフォルダ/ドキュメントルートの外部にフレームワークファイルをインストールすると(上記のように)、ブラウザでフレームワークファイルにアクセスできないため、アプリケーションの安全性が比較的高くなります。

スリムベースのプロジェクトを整理する

Slimプロジェクトは通常、次の3つのメインディレクトリに分散しています。

1.1。 スリムフレームワークディレクトリ
このディレクトリにはフレームワークファイルが含まれており、前の手順でコピーされたディレクトリです(/ usr / local / Slim)

2.2。 プロジェクトディレクトリ
このディレクトリには、ルーター、ビュー、モデルなどのプロジェクトファイルが含まれています。 スリムはマイクロフレームワークであるため、特定のプロジェクト構造を強制しません。 これは、適切と思われる方法でプロジェクトファイルを自由に構造化できることを意味します。 これは、開発者が特定のフォルダ構造に慣れている場合に特に役立ちます。

このディレクトリはサーバー上のどこにでも配置できますが、理想的にはWebアクセス可能な場所に配置しないでください。 あなたはそれをに置くことができます /usr/local またはホームフォルダにあります。 たとえば、プロジェクト内の次の名前のフォルダに作成する場合 HelloSlim、それはに位置する可能性があります /usr/local/HelloSlim また ~/HelloSlim またはあなたが好む他の場所。

このフォルダ内のファイルを配置する方法の1つは次のとおりです。

HelloSlim
|- Routes
|  |- route1.php
|  |- route2.php
|- Models
|  |- model1.php
|  |- model2.php
|- Views
|  |- footer.php
|  |- header.php
|  |- sidebar.php
|  |- view1.php
|  |- view2.php
|- Class
|  |- class1.php
|  |- class2.php
|- routes.php       //contains 'include' statements for all routes in the 'Routes' folder
|- includes.php     //contains 'include' statements for all models/classes in the 'Models/Class' folders

次のコマンドを実行して、このフォルダー構造を作成できます。

mkdir /usr/local/HelloSlim
mkdir /usr/local/HelloSlim/Routes
mkdir /usr/local/HelloSlim/Models
mkdir /usr/local/HelloSlim/Views
mkdir /usr/local/HelloSlim/Class

ノート: このフォルダ構造を使用することも、好みに合わせて完全に変更することもできます。

3.3。 ドキュメントルート/パブリックフォルダ
これはWebアクセス可能なフォルダです(通常は次の場所にあります) /var/www). このフォルダーには、Slim関連のファイルが2つだけ含まれています。

  • index.php
  • .htaccess

このフォルダには、すべてのプロジェクトスクリプト、スタイル、および画像ファイルも含まれます。 物事を整理するために、それらをに分割することができます scripts, stylesimages それぞれフォルダ。

ドキュメントルートフォルダの構造例は次のとおりです。

Document Root (eg. /var/www/) 
|- scripts
|  |- jquery.min.js
|  |- custom.js
|- styles
|  |- style.css
|  |- bootstrap.min.css
|- images
|  |- logo.png
|  |- banner.jpg
|- .htaccess
|- index.php

ファイルの内容

プロジェクトが上記で定義された構造を持っていると仮定すると、 .htaccessindex.php それぞれ次の内容のファイル(ドキュメントルート内):

.htaccess

RewriteEngine On  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ^ index.php [QSA,L]  

index.php

<?php

require '/usr/local/Slim/Slim.php';     //include the framework in the project
\Slim\Slim::registerAutoloader();       //register the autoloader

$projectDir = '/usr/local/HelloSlim';   //define the directory containing the project files

require "$projectDir/includes.php";     //include the file which contains all the project related includes

$app = new \Slim\Slim(array(
    'templates.path' => '/usr/local/HelloSlim/Views'
));      //instantiate a new Framework Object and define the path to the folder that holds the views for this project

require "$projectDir/routes.php";       //include the file which contains all the routes/route inclusions

$app->run();                            //load the application

プロジェクトが前のセクションで定義されたフォルダ構造に従って配置されていると仮定してこのチュートリアルを完了するには、 routes.phpincludes.php (プロジェクトディレクトリ内の)ファイルには、次の内容が含まれている必要があります。

ルート.php

<?php

require '/usr/local/HelloSlim/Routes/route1.php';
require '/usr/local/HelloSlim/Routes/route2.php';

ノート: ルートを含む他のファイルを含める代わりに、このファイルに直接ルートを作成できます。 ただし、論理的にグループ化されたさまざまなファイルでルートを定義すると、プロジェクトの保守性が向上します。

include.php

<?php

require "/usr/local/HelloSlim/Class/class1.php";
require "/usr/local/HelloSlim/Class/class2.php";

require "/usr/local/HelloSlim/Models/model1.php";
require "/usr/local/HelloSlim/Models/model2.php";

サンプルスリムアプリケーション

Slimアプリケーションのセットアップ方法がわかったので、次のような簡単なアプリケーションを作成しましょう。

  • 静的ルートを処理します(GET&POST)
  • 動的ルートを処理します
  • ビューを使用します

ノート: このサンプルアプリケーションは、Slimが上記のように展開されていることを前提としています。

このサンプルアプリケーションの要件を計画してみましょう。

ルート タイプ アクション
/こんにちは GET(静的) 静的ビューを表示します
/ hello / NAME GET(動的) 動的ビューを表示します
/挨拶 役職 POSTリクエスト後にビューを表示します

このプロジェクトでは、アプリケーションフォルダに次のファイルを作成する必要があります(/usr/local/HelloSlim/):

HelloSlim
|- Routes
|  |- getRoutes.php
|  |- postRoutes.php
|- Views
|  |- footer.php
|  |- header.php
|  |- hello.php
|  |- greet.php
|- routes.php       

パブリックフォルダ/ドキュメントルートは次のようになります。

ドキュメントルートフォルダの構造例は次のとおりです。

Document Root (eg. /var/www/) 
|- .htaccess
|- index.php

次に、これらのファイルを次のように入力します。

1. /var/www/.htaccess

RewriteEngine On  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ^ index.php [QSA,L] 

2. /var/www/index.php

<?php

require '/usr/local/Slim/Slim.php';     //include the framework in the project
\Slim\Slim::registerAutoloader();       //register the autoloader

$projectDir = '/usr/local/HelloSlim';   //define the directory containing the project files

$app = new \Slim\Slim(array(
    'templates.path' => '/usr/local/HelloSlim/Views'
));      //instantiate a new Framework Object and define the path to the folder that holds the views for this project

require "$projectDir/routes.php";       //include the file which contains all the routes/route inclusions

$app->run();                            //load the application

3. /usr/local/HelloSlim/Routes/getRoutes.php

<?php

$app->get('/', function(){
    echo 'This is a simple starting page';
});

//The following handles any request to the /hello route

$app->get('/hello', function() use ($app){
    // the following statement invokes and displays the hello.php View
    $app->render('hello.php');
});


//The following handles any dynamic requests to the /hello/NAME routes (like /hello/world)

$app->get('/hello/:name', function($name) use ($app){
    // the following statement invokes and displays the hello.php View. It also passes the $name variable in an array so that the view can use it.
    $app->render('hello.php', array('name' => $name));
});

4. /usr/local/HelloSlim/Routes/postRoutes.php

<?php

 //The following handles the POST requests sent to the /greet route

$app->post('/greet', function() use ($app){
    //The following statement checks if 'name' has been POSTed. If it has, it assigns the value to the $name variable. If it hasn't been set, it assigns a blank string.
    $name = (null !== $app->request->post('name'))?$app->request->post('name'):'';

    //The following statement checks if 'greeting' has been POSTed. If it has, it assigns the value to the $greeting variable. If it hasn't been set, it assigns a blank string.
    $greeting = (null !== $app->request->post('greeting'))?$app->request->post('greeting'):'';
        
    // the following statement invokes and displays the 'greet.php' View. It also passes the $name & $greeting variables in an array so that the view can use them.
    $app->render('greet.php', array(
        'name' => $name,
        'greeting' => $greeting
    ));
});

5. /usr/local/HelloSlim/Views/footer.php

        <small>Copyright notice...</small>
    </body>
</html>

6. /usr/local/HelloSlim/Views/header.php


サンプルスリムアプリケーション

7. /usr/local/HelloSlim/Views/hello.php


***
<?php include('header.php'); ?>

***
<h1>Hello <?php echo isset($name)?$name:''; ?></h1>
<!-- The above line handles both the dynamic and the static GET routes that we implemented in the getRoutes.php file.

***

<h2>Send a greeting</h2>
<form method='POST' action='/greet'>
    <label>Name</label><br>
    <input name='name' placeholder='Who do you want to greet?'><br>
    <label>Greeting</label><br>
    <input name='greeting' placeholder='Your greeting message'><br>
    <input type='submit' value='Greet!'>
</form>
    
***
<?php include('footer.php'); ?>

8. /usr/local/HelloSlim/Views/greet.php

    <?php 

    include('header.php'); 

    echo "<p>$greeting, $name</p><p><a href='/hello'>First Page</a></p>";

    include('footer.php'); 

9. /usr/local/HelloSlim/routes.php

    <?php
    
    include 'Routes/getRoutes.php';
    include 'Routes/postRoutes.php';

サンプルアプリケーションのスクリーンショット

新しく作成したサンプルアプリケーションにアクセスした場合 http://yourdomain.com/、次のようなものが表示されます。

Starting Page

ノート: Digital Oceanドロップレットでドメイン名を使用していない場合は、代わりにドロップレットのIPアドレスを使用してください。

あなたが訪問した場合 http://yourdomain.com/hello、次のようになります。

Hello Static

あなたが訪問した場合 http://yourdomain.com/hello/World、次のようになります。

Hello Dynamic

ノート: URLの「World」を別の単語に置き換えると、それに応じてページのコンテンツが変更されます。

POSTルートをテストするには、使用可能なフィールドに名前と挨拶を入力し、[Greet!]をクリックします。 次のようにボタン:

Greeting Entry

「Greet!」を押した後ボタンをクリックすると、次のようなものが表示されます。

Greeting Result

最後の言葉

Slimフレームワークの適切に編成された作業インスタンスがインストールされたので、プロジェクトでの作業を開始する準備が整いました。 Slimについてさらにサポートが必要な場合は、いつでも包括的な公式ドキュメントを参照できます。

提出者: http ://www.php.buzz ”>ジェイ