جشنواره ۵۰٪ تخفیف فرانش به مدت محدود

جشنواره ۵۰٪ تخفیف فرانش محدود

0 روز 0 ساعت 0 دقیقه 0 ثانیه

شروع یادگیری

آموزش فارسی Yii2

آموزش Yii2: پروژه محور گام به گام + دانلود فیلم آموزشی

یکی از فریمورک‌های PHP که در بین مردم بسیار محبوب هست فریمورک Yii2 یا به فارسی فریمورک یی می‌باشد. این نوع فریمورک بسیار قدرتمند، تمام آنچه که برنامه نویسان به آن نیاز دارند را در خودش جای داده است. به دلیل اهمیت بالای آن، تصمیم گرفتیم در این مقاله به آموزش Yii2 بپردازیم. بعد از نصب Yii2 Framework سراغ ویژگی‌های مهم آن شامل استفاده از معماری MVC برای PHP در این نوع فریمورک می‌پردازیم و پس از تنظیم اپلیکیشن Yii، در گیت هاب یک ریپازیتوری ایجاد می‌کنیم.

در این آموزش نصب Yii 2.0 را یاد می‌گیریم، محیط توسعه‌ی محلی‌ خود را راه‌اندازی می‌کنیم، یک اپلیکیشن Hello World ساده می‌سازیم، محیطِ هاستینگ ریموت خود را تنظیم می‌کنیم و کدمان را در یک ریپازیتوری گیت‌هاب قرار می‌دهیم.

آنچه در انتهای نصب Yii2 مشاهده خواهید کرد
آنچه در انتهای نصب Yii2 مشاهده خواهید کرد

نصب و راه اندازی Yii2

اسناد

در این قسمت مراحل اولیه‌ی نصب  Yii2 PHP Framework  را در سیستم‌عامل مک با هم یاد می‌گیریم. Yii 2.0 اسناد متعددی دارد که جزئیات مرتبط به آن را می‌توانید در آنها پیدا کنید.

آموزش نصب Composer

Yii2 به یک کامپوزر نیاز دارد. کامپوزر یک مدیر Dependency معروف برای PHP است. اگر در سیستم‌تان کامپوزر ندارید، کد زیر را اجرا کنید:

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

نصب فریم ورک Yii2

حالا از کامپوزر برای نصب Yii2 استفاده می‌کنیم. برای نصب باید اکانت گیت‌هاب خود را داشته باشید و اطلاعات آن را وارد کنید. اگر در گیت‌هاب حساب ندارید، از اینجا یک اکانت بسازید.

بیایید نام اولین پروژه را “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 براساس نوع اپلیکیشن، دو نوع تمپلت نصب در اختیارتان قرار می‌دهد. در این آموزش از اپلیکیشن Basic استفاده می‌کنیم که به صورت پیش‌فرض نصب شده است. تمپلت Advanced آن به شما امکان دسترسی به قسمت‌های فرانت‌اند (Front-End)، بک‌اند (Back-End) و یک کنسول (Console) را می‌دهد تا بتوانید اپلیکیشن‌های تحت وب پیشرفته‌تر مثل یک بلاگ وردپرسی بسازید. داشبورد ادمین و بَک آن به صورت کرون جاب (Cron Job) است.

 

در این دوره تفاوت‌ها و قابلیت‌های Yii basic و Yii Advanced را آموخته و همچنین با نصب Yiiframework2 قالب Advanced آشنا می‌شوید:

آموزش نصب Yiiframework2 قالب Advanced

آموزش نصب تصویری MAMP

من از برنامه‌ی رایگان و متن‌باز MAMP برای توسعه‌ی LAMP استفاده می‌کنم. مطمئن شوید که MAMP به خوبی کار می‌کند و سرورهای وب و پایگاه داده‌ی آن فعالند. سپس یک Symlink به Sites پوشه‌ی برنامه برای MAMP بسازید:

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

سپس به آدرس http://localhost:8888/hello/web بروید. می‌بینید که اپلیکیشن Yii2 با تمپلت Basic، که دارای Bootstrap 3.x است، اجرا می‌شود.

نصب فریم ورک Yii2
نصب فریم ورک Yii2

این صفحه برای برنامه‌نویسان Yii 1.1 جالب خواهد بود، چون Yii قبلاً از Bootstrap پشتیبانی نمی‌کرد. Bootstrap یک فریمورک رسپانسیو CSS است که تقریباً در همه‌جای وب از آن استفاده می‌شود.

معماری اپلیکیشن Yii

یکی از مهم‌ترین ویژگی‌های فریمورک Yii داشتن معماری MVC) Model View Controller) برای PHP است. این ویژگی محیط برنامه‌نویسی را ساختاریافته‌تر، کد برنامه را قابل‌فهم‌تر و انجام برخی وظایف مشکل PHP مثل امنیت و تولید کد خودکار را ساده‌تر می‌کند. هم‌چنین این ویژگی قابلیت توسعه و استفاده‌ی مجدد از کد را افزایش می‌دهد.

در یک اپلیکیشن Yii، تمام ترافیک برنامه را به یک فایل به نام /web/index.php منتقل می‌کنیم. این فایل Yii و تمام Dependencyهایش را لود و سپس برنامه را اجرا می‌کند.

<?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();

متد Index به صورت پیش‌فرض در فایل /controllers/SiteController.php به صورت زیر است:

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

اغلب، Controllerها متدهای بسیاری دارند، که مثل کد بالا تعداد خط کدهایش کم است. Controllerها سطح دسترسی را مدیریت می‌کنند، از Modelها استفاده می‌کنند و از Viewها رندر می‌گیرند. هوش برنامه باید در Modelهایتان قرار گیرد و Viewهای برنامه باید عملکردهای نسبتاً ساده‌ای را در تمپلت ارائه کنند.

Yii به صورت پیش‌فرض از /views/layouts/main.php در Index View برنامه یعنی /views/site/index.php رندر می‌گیرد. main.php حاوی ساختار HTML و CSS صفحه است، مثل تولبار و محتوا. در فایل main.php می‌بینید که Content فراخوانی می‌شود:

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

کد فایل /views/site/index.php به جای متغیر $content قرار می‌گیرد که در حال حاضر یک کد HTML ساده است که پیغام Congratulations! را در صفحه‌ی بالا نمایش می‌دهد.

ساخت برنامه‌ی Hello World!

فعال کردن Pretty URL

بیایید اول Pretty URLها را با mod_rewrite فعال کنیم. اگر در صفحه‌ی اول Yii، روی گزینه‌ی About در منو کلیک کنید، URL زیر را می‌بینید:

http://localhost:8888/hello/web/index.php?r=site%2Fabout

ما می‌خواهیم آن را به صورت زیر تغییر دهیم:

localhost:8888/hello/web/site/about

پوشه‌ی config حاوی فایل‌های کانفیگریشن اپلیکیشن‌های کنسول و تحت وب و تنظیمات پایگاه‌داده است. /config/web.php را ویرایش و urlManagement را به اپلیکیشن کنونی تحت وب اضافه کنید. بخش urlManager را درون آرایه‌ی Components اضافه کنید:

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

سپس یک فایل .htaccess را در /web و جایی که فایل index.php وجود دارد، بسازید:

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 اجرا می‌شود.

در مرورگرتان، آدرس http://localhost:8888/hello/web/site/about را باز کنید. باید وارد صفحه‌ی About اپلیکیشن Yii شوید و گزینه‌های دیگر منو هم باید URLهایی به همین شکل داشته باشند.

 

برای یادگیری مفاهیم پایه و اساسی فریمورک Yii2 کلیک کنید:

 چگونگی شروع سریع بر YiiFramework

ساخت Say Hello World! Action

حالا، یک Action به نام Say برای Controller می‌سازیم تا پیغام موردنظرمان را تکرار کند. کد زیر را در /controllers/SiteController.php اضافه کنید:

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

این کد به دنبال پارامتر URLای به نام target می‌گردد تا در صفحه نمایش نشان دهد. اگر پارامتر target وجود نداشته باشد، “World” را تکرار می‌کند. Actionها در Yii با پیشوند action شروع می‌شوند و بعد از آن نام موردنظر برای Action قرار می‌گیرد. در کلاس SiteController، از public function actionSay استفاده می‌کنیم. Yii با استفاده از پیشوند action متدهای Action را از سایر متدها تشخیص می‌دهد.

متد رندر به صورت پیش‌فرض به دنبال فایلی در 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>

این یک فایل ویو است که تگ h1 را، که حاوی Hello است، به همراه متغیر target تکرار می‌کند.

نکته: متغیر target را encode می‌کنیم تا از آرگومان‌های پارامتر URL در مقابل کد بدخواه مراقبت کنیم.

اگر به آدرس http://localhost:8888/hello/web/site/say?target=Tuts%20Readers بروید، صفحه‌ی زیر را خواهید دید:

ساخت Say Hello World! Action
ساخت Say Hello World! Action

این مثالی بسیار ساده از معماری MVC اپلیکیشن‌های Yii2 بود.

حالا بیایید اپلیکیشن را در گیت‌هاب قرار دهیم و آن را در یک سرور محیط توزیع نهایی (Production Server) دپلوی (Deploy) کنیم.

آموزش مقدماتی Laravel

تنظیم محیط هاستینگ ریموت

اپلیکیشن Basic به خوبی با Apache یا Nginx کار می‌کند که در اینجا درباره‌ی Apache صحبت خواهیم کرد.

ساخت یک ریپازیتوری در گیت هاب

بعد از تنظیم تمپلت اپلیکیشن Yii، یک ریپازیتوری در گیت‌هاب می‌سازیم:

ساخت یک ریپازیتوری در گیت هاب
ساخت یک ریپازیتوری در گیت هاب

نکته: می‌توانید Yii2 .gitignore را از گیت‌هاب کپی و در فایل ~/Sites/hello/.gitignore کپی کنید. هم‌چنین می‌توانید سایت را به صورت ریموت با آن بسازید سپس به صورت محلی تلفیق کنید. هر دو رویکرد خوب است، اما رویکرد اول ساده‌تر است.

 

می‌توانید از اپلیکیشن گیت‌هاب یا خط فرمان برای ساخت ریپازیتوری استفاده کنید. در کد زیر، با استفاده از این دستورات یک پروژه‌ی موجود را از طریق خط فرمان به گیت‌هاب اضافه می‌کنیم (به جای “youraccount” نام اکانت گیت‌هابتان را بنویسید):

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

کانفیگ کردن یک سایت Apache روی سرور

سرور LAMP یا ابری خود را راه‌اندازی کنید. وقتی IP خود را به دست آورید، DNS را تغییر دهید تا یک نقطه‌ی A به سرور ایجاد کنید:

yourdomain.com A 192.161.234.17

سپس با استفاده از IP یا دامین وارد سرور شوید:

ssh root@yourserver.com

کانفیگریشن را آپدیت کنید، گیت را نصب کنید، mod_rewrite را برای Apache و mcrypt را برای PHP فعال کنید:

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

دوره‌های مرتبط در فرانش

دسترسی گیت هاب را در سرور ریموت تنظیم کنید

حالا کاربری را برای Pull کردن کد از گیت‌هاب ایجاد می‌کنیم که توسط Apache پشتیبانی می‌شود. گیت را روی سرورتان نصب کنید:

sudo apt-get install git

حالا گروهی برای www ایجاد می‌کنیم، کاربران www-data و گیت‌هاب را به آن اضافه می‌کنیم و مالکیت پوشه‌های وب‌مان را به آن می‌دهیم.

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.com پیست کنید:

به صفحه‌ی Setting ریپازیتوری گیت‌هاب بروید و این کلید را در قسمت Keys به ریپازیتوری خود اضافه کنید:

افزودن کلید به بخش Keys ریپازیتوری گیت هاب
افزودن کلید به بخش Keys ریپازیتوری گیت هاب

پس از اضافه کردن، می‌بینید که کلید به صورت زیر نمایش داده می‌شود:

چگونگی نمایش کلید
چگونگی نمایش کلید

در آخر هم می‌توانید آن را به سرور محیط توزیع نهایی Clone کنید:

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

 

اگر دسترسی گیت‌هاب را به درستی تنظیم کرده باشید، باید به چیزی شبیه شکل زیر برسید:

خروجی در صورت تنظیم صحیح دسترسی گیت هاب
خروجی در صورت تنظیم صحیح دسترسی گیت هاب

پس از این می‌توانید با توسعه‌های بیشتر کدتان، آنها را با استفاده از دستور Pull گیت در سرور ریموت سینک کنید. این کار از سینک کردن دستی کدها بسیار ساده‌تر است.

ساخت یک Apache Site Configuration

یک فایل کانفیگ 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

حالا به آدرس http://yourdomain.com/site/say?target=World! بروید و باید اپلیکیشن‌تان را ببینید که بدون یک تولبار دیباگ Yii2 در پایین صفحه و به صورت زیر اجرا می‌شود:

ساخت یک Apache Site Configuration
ساخت یک Apache Site Configuration

همراهان گرامی سایت فرانش پس از مطالعه این آموزش، می‌توانید به سراغ قابلیت‌های پیچیده‌تر Yii2 بروید. در صورتیکه پیشنهاد و یا انتقادی دارید در بخش دیدگاه در انتهای مقاله ثبت کنید.

دوره‌های مرتبط در فرانش

مرتضی شایق

مرتضی شایق

مدیر دیجیتال مارکتینگ

فعال در دیجیتال مارکتینگ در تخصص‌های: SEO (بهینه‌سازی سایت برای موتورهای جستجوگر)، SEM (بازاریابی در موتورهای جستجوگر)، UX (تجربه کاربری)

بدون دیدگاه

دیدگاهتان را بنویسید