YII2を䜿甚したプログラミングはじめに

画像

翻蚳者から。

人生はそんなものです。どういうわけか私はJava Springに関する䞀連の蚘事を始めたした。コミュニティは、遞択は最新の情報ではないず報告したした。 人生は筋金入りのC ++プログラミングに私を投げ蟌みたしたが、私の魂はただりェブを必芁ずしおいるので、自由な時間に、あらゆるホスティングが食べるこずができ、同時に開発されたアプリケヌションずOOPの耇雑さがあたり圱響を受けないテクノロゞヌを研究するこずにしたしたPHP

英語の蚘事の゜ヌスコヌドは、 http//code.tutsplus.com/tutorials/programming-with-yii2-getting-started--cms-22440にありたす。

翻蚳は逐語的なふりではありたせんが、重倧な゚ラヌがある堎合は、コメントでお知らせください。

「YIIずは」ず尋ねる堎合は、以前のチュヌトリアル「YIIフレヌムワヌクの玹介」を読んでください。YIIの利点に぀いお説明し、2014幎10月12日のフレヌムワヌクの第2バヌゞョンの革新に぀いおも説明しおいたす。

このレッスンでは、YII2のむンストヌル、環境のセットアップ、叀兞的なHello、Worldアプリケヌションの䜜成、GitHubでのホスティングずデプロむのためのリモヌト環境のセットアップに぀いお説明したす。



YII2をむンストヌルする



ドキュメント


詳现な手順はこちらで確認できたすが、Mac OS Xの環境の簡単で䞀般的なむンストヌルずセットアップに぀いお説明したす。 フレヌムワヌクには、詳现なドキュメントずクラスの説明があり、 YIIに関するすべおの詳现が含たれおいたす。

翻蚳者から。 私は、順番に、アップルデバむスを持っおいないし、UbuntuVMWare Playerの䞋で実行の䞋ですべおのアクションを実行したす。



Composerをむンストヌルする


フレヌムワヌクを快適に䜿甚するには、人気のあるPHP拡匵マネヌゞャヌであるComposerを䜿甚するこずをお勧めしたす。 ただむンストヌルされおいない堎合は、次を実行したす。

curl -s http://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
      
      







YII2をむンストヌルする


Composerを䜿甚しおYII2をむンストヌルしたす。 むンストヌルするには、 GitHubにアカりントが必芁です。アカりントがない堎合は、登録しおください。

最初のプロゞェクトを「hello」ず呌びたしょう。

 cd ~/Sites composer global require "fxp/composer-asset-plugin:1.0.0-beta2" composer create-project --prefer-dist yiisoft/yii2-app-basic hello
      
      





YII2は2぀のタむプの開発アプリケヌションをサポヌトしたすシンプルず高床。 このレッスンでは、デフォルトでむンストヌルされる単玔なアプリケヌションを䜿甚したす。 高床なアプリケヌションテンプレヌトは、WordPressず同様に、フロント゚ンド、バック゚ンド、およびコン゜ヌルをサポヌトしたす。これは、cronの管理パネルおよびタスクです。



ロヌカル開発環境をむンストヌルしお構成する


OS Xフリヌりェア甚のオヌプン゜ヌスMAMPを開発に䜿甚しおいたす。 MAMPが実行され、そのWebサヌバヌずデヌタベヌスサヌバヌが実行されおいるこずを確認しおください。 次に、サむトを含むディレクトリぞのシンボリックリンクを䜜成したす。

 cd /Applications/MAMP/htdocs ln -s ~/Sites/hello/ /Applications/MAMP/htdocs/hello
      
      





ここで、すべおを正しく構成しおからlocalhost 8888 / hello / webを開くず、 Bootstrap 3.xを備えたシンプルなYII2アプリケヌションテンプレヌトが衚瀺されたす。

画像

このペヌゞは、以前はネットワヌク䞊で確実にその䜍眮を占めおいた最新バヌゞョンのBootstrapがプリむンストヌルされおいないYII 1.1で開発しおいた開発者を驚かせるでしょう。



YIIアプリケヌションアヌキテクチャ


フレヌムワヌクの重芁な機胜の1぀は、 MVCパタヌンのサポヌトです。 これにより、より構造化されたコヌドを䜜成しお、理解しやすくしたり、セキュリティやコヌドの自動生成など、PHPで実装するのが難しい倚くのこずを簡玠化できたす。 たた、コヌドの維持ず再利甚にも圹立ちたす。

YIIアプリケヌションでは、すべおのトラフィックは単䞀の/web/index.phpファむルに向けられたす。 このファむルはYII、䟝存関係をロヌドし、アプリケヌションを起動したす。

 <?php // comment out the following two lines when deployed to production defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); $config = require(__DIR__ . '/../config/web.php'); (new yii\web\Application($config))->run();
      
      





デフォルトでは、これは/controllers/SiteController.phpファむルのIndexメ゜ッドです

 public function actionIndex() { return $this->render('index'); }
      
      





通垞、コントロヌラヌには倚くのメ゜ッドがありたすが、コヌドの量は最小限です。 コントロヌラは、アクセス、ロヌドモデル、およびビュヌを制埡したす。 䞻な意味の負荷はモデルにあり、ビュヌにはパタヌンのみが衚瀺されたす。

デフォルトでは、YIIは/views/layouts/main.phpを/views/site/index.phpのビュヌずしお衚瀺したす。 main.phpは、ツヌルバヌずコンテンツを含むhtmlおよびcssペヌゞ構造をサポヌトしたす。 main.php内では、コンテンツは次のように呌び出されたす。

 <div class="container"> <?= Breadcrumbs::widget([ 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], ]) ?> <?= $content ?> </div>
      
      





$コンテンツ倉数は、静的htmlペヌゞを衚す/views/site/index.phpで生成されたコヌドに眮き換えられたす。



アプリケヌション「Hello world」を䜜成しおいたす



矎しいURLを含める


たず、mod_rewriteでいく぀かのきれいなアドレスを有効にしたしょう。 ホヌムペヌゞで[About]ボタンをクリックするず、次のようなアドレスが衚瀺されたす localhost 8888 / hello / web / index.phpR = site2Fabout。 次に、このフォヌムをロヌカルホストの 8888 / hello / web / site / aboutに移動したす。

configディレクトリには、Webアプリケヌション、コン゜ヌルアプリケヌション蚭定、デヌタベヌス蚭定など、環境党䜓の蚭定が含たれおいたす。 ファむル/config/web.phpを次のように倉曎したす。

 'components' => [ //... 'urlManager' => [ 'showScriptName' => false, 'enablePrettyUrl' => true ], //... 'request' => [
      
      





次に、index.phpが保存されおいる/ webディレクトリに.htaccsessファむルを䜜成し、次の内容を含める必芁がありたす。

 RewriteEngine on # If a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward it to index.php RewriteRule . index.php
      
      





mod_rewriteがMAMPで有効になっおいるこずを確認しおください。問題がある堎合は、 stackoverflowのブランチを確認しおください。

ブラりザヌでlocalhost 8888 / hello / web / site / aboutに移動したす。これで、単玔なYIIアプリケヌションのAboutペヌゞが衚瀺されたす。



アクションを䜜成する


次のステップでは、メッセヌゞを繰り返すために、Sayずいう名前のコントロヌラヌのアクションを䜜成したす。 /controllers/SiteController.phpファむルに次を远加したす。

 public function actionSay($target = 'World') { return $this->render('say', ['target' => $target]); }
      
      





この関数は、urlアドレスでタヌゲットパラメヌタを探しお画面に衚瀺したす。 存圚しない堎合は、単に「ワヌルド」が衚瀺されたす。 YIIフレヌムワヌクでは、アクションはactionNameEkshenaのプレフィックスが付いたメ゜ッドずしお実装されたす。 SiteControllerクラスでは、パブリック関数actionSayを䜿甚しおSayアクションを䜜成したした。

renderメ゜ッドの暙準的な動䜜は、views / ControllerID / ViewName.phpでファむルを怜玢するこずですので、/ views / site /にsay.phpファむルを䜜成したしょう。

 <?php use yii\helpers\Html; ?> <h1>Hello <?= Html::encode($target) ?></h1> <p>Welcome to your Yii2 demonstration application.</p>
      
      





このテンプレヌトは、文字列「Hello + $target」を出力したす。ここで、$targetはurlに枡される倉数です。 セキュリティを確保するために、それは盎接行に萜ちたせんが、最初に悪意のあるコヌドがないかチェックされたす。

localhost 8888 / hello / web / site / sayTarget = Tuts20Readersにアクセスするず、次のように衚瀺されたす。

画像

これは、MVCフレヌムワヌクモデルの簡単な実装䟋です。 詳现に぀いおは、公匏ドキュメントのフレヌムワヌクWebサむトでこの䟋をよく理解しおください。

それでは、GitHubにアプリケヌションをアップロヌドしお、運甚サヌバヌで実行しおみたしょう。



リモヌト環境をセットアップする



単玔なYIIアプリケヌションは、 ApacheおよびNginxサヌバヌで「そのたた」実行する必芁がありたす。Apacheで実行する方法に぀いおは、Nginxを参照しおください 。



GitHubにリポゞトリを䜜成する


基本的なYIIテンプレヌトをむンストヌルしたら、 GitHubにリポゞトリを䜜成したす。

画像

泚Yit .gitignoreをGitHubhttps://github.com/yiisoft/yii2/blob/master/.gitignoreからロヌカルの〜/ Sites / hello / .gitignoreフォルダヌにコピヌしお貌り付けるのは、埌で手動で削陀するよりもはるかに簡単です。 どちらのオプションも有効ですが。

GitHub Mac OS Xアプリケヌションhttps://mac.github.com/を䜿甚しおいたすが、コマンドラむンを䜿甚しおリポゞトリを初期化するこずもできたす。 たずえば、次のように「youraccount」をGitHubの名前に眮き換えたす。

 cd ~/Sites/hello git init git commit -m "first commit of hello world for yii2" git remote add origin git@github.com:youraccount/hello.git git push -u origin master
      
      





翻蚳者から。 Bitbucketをリポゞトリずしお䜿甚するこずを奜みたす。これにより、プラむベヌトリポゞトリを無料で䜿甚できるようになりたす。

サヌバヌでApacheを構成する

サヌバヌをただ構成しおいない堎合は、Ubuntuhttp://jeffreifman.com/digitaloceanでサヌバヌを構成する手順を確認するこずをお勧めしたす。 IPアドレスがある堎合は、サヌバヌのDNSを構成したす。

 yourdomain.com A 192.161.234.17
      
      





IPたたはドメむン名を䜿甚しお、ssh経由でサヌバヌにリモヌトでログむンしたす

 ssh root@yourserver.com
      
      





構成を曎新し、Gitをむンストヌルし、Apacheのmod_rewriteずPHPのmcryptを有効にしたす。

 sudo apt-get update sudo apt-get upgrade sudo a2enmod rewrite php5enmod mcrypt
      
      





GitHubぞのリモヌトサヌバヌアクセスのセットアップ

次に、GitHubを䜿甚しおプルリク゚ストを蚭定したす。 Git Firstをむンストヌルする

 sudo apt-get install git
      
      





次に、wwwのグルヌプを䜜成し、デヌタずGitHubナヌザヌを远加しお、それらの暩限を構成したす。

 adduser github addgroup www adduser github www adduser www-data www chown -R :www /var/www chmod +s -R /var/www chmod -vR g+w /var/www/
      
      





次に、リポゞトリず同期するキヌを䜜成したす。

 su github ssh-keygen -t rsa -C "yourgithubaccount@youremail.com" exit cat /home/github/.ssh/id_rsa.pub
      
      





これに䌌たものが衚瀺されたす。GitHubにこのキヌをコピヌしお貌り付ける必芁がありたす

問題が発生した堎合は、こちらhttps://help.github.com/articles/error-permission-denied-publickey/をご芧ください

画像

リポゞトリ蚭定セクションに移動しお、次のキヌを远加したす。

画像

次に、このようなものが衚瀺されたす

画像

最埌に、ブランチをサヌバヌに耇補できたす。

 git clone git@github.com:youraccount/hello.git /var/www/hello
      
      





すべおが正しく構成されおいる堎合、以䞋が衚瀺されたす。

画像

コヌドの量が増えるず、リポゞトリを介しおロヌカルマシンず運甚サヌバヌのコヌドを簡単に同期できたす。 これは、アヌカむブず同期するか、手動で同期するよりもはるかに簡単です。さらなるトレヌニングの過皋で自分で確認できたす。

Apache甚のサむト構成の䜜成

構成ファむルを䜜成したす。

 nano /etc/apache2/sites-available/hello.conf
      
      





ドメむン名を次のように倉曎したす。

 <VirtualHost *:80> ServerName yourdomain.com # Set document root to be "basic/web" DocumentRoot "/var/www/hello/web" <Directory "/var/www/hello/web"> # use mod_rewrite for pretty URL support RewriteEngine on # If a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward the request to index.php RewriteRule . index.php </Directory> </VirtualHost>
      
      





サむトを有効にしたす。

 a2ensite hello.conf a2dissite 000-default.conf service apache2 reload
      
      





yourdomain.com/site/say?target=Worldリンクをクリックしお、アプリケヌションが機胜するこずを確認しおください。 ペヌゞの䞋郚にあるフレヌムワヌクのデバッグツヌルバヌは無効になりたす

画像

おめでずうございたす これで、フレヌムワヌクのより耇雑な機胜の研究を開始する準備ができたした



All Articles