Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010 → Yii 2, 2013
Yii::setPathOfAlias('root', __DIR__);
echo Yii::getPathOfAlias('root');
Оставляем только index.php
поправляя в нём пути.
// change the following paths if necessary
$yii='\path\to\framework\yii.php';
$config=__DIR__.'/../protected/config/main.php'; // !!!
...
Более безопасно, удобней.
runtime
из protected
protected/config/main.php
, protected/config/console.php
:
return array(
'runtimePath' => Yii::getPathOfAlias('system') . '/../runtime/',
...
);
Туда пишется лог, файловый кеш, кеш HTMLPurifier, состояние приложения.
id
для приложенияprotected/config/main.php
, protected/config/console.php
:
return array(
'id' => 'my-app-name',
...
);
Используется как префикс для:
index.php
прописать:
if(!defined('YII_DEBUG')) {
define('YII_DEBUG', false);
}
Значительно влияет на производительность, безопасно.
return array(
...
'components'=>array(
...
'cache'=>array( // !!!
'class'=>'CDbCache',
),
'db'=>array(
'connectionString'=>'mysql:host=localhost;dbname=yii_test',
'schemaCachingDuration'=>3600, // !!!
),
),
);
Значительно влияет на производительность.
Можно поробовать yiilite.php
. Хорошо работает с
некоторыми версиями PHP и APC, но плохо с другими.
По сути, деплой в PHP не очень нужен... поначалу.
master
, release-X.X
, feature-XXX
.X.X.Y
base-schema.sql
— начальная структура.base-data.sql
— начальные данные.На сервере пускаем скриптик, он вытягивает код из системы контроля версий.
На это время может ставить maintenance mode.
Выносим настройки в конфиг.
common
config
main.php
main-local.php ← .gitignore
env
production
config
main-local.php
development
config
main-local.php
frontend
config
main.php
main-local.php ← .gitignore
www
index.php ← .gitignore
env
production
config
main-local.php
www
index.php
development
config
main-local.php
www
index.php
install.php <application> <environment>
common/config/params.php
common/config/params-local.php
frontend/config/params.php
frontend/config/params-local.php
$config1 = array(...);
$config2 = array(...);
$finalConfig = CMap::mergeArray($config1, $config2);
CMap::mergeArray
можно закешировать.
yiic compress all
(в паблике нет). all_123hash123.js
, прописывает его в frontend/config/params-local.php
.yiic migrate
.Внешние | Внутренние |
---|---|
Latency. | Нужно мониторить. |
Ломаются. | Нужно ставить. |
Без напряга. | Нужно поддерживать. |
Стоят денег. | Детали. |
Гарантии. | Нет гарантий. |
CClientScript::registerScriptFile()
.
return array(
'jquery.js',
'widget.login.js',
'widget.friends.js',
'module.user.js',
'module.post.js',
);
@base: #f938ab;
.box-shadow(@style, @c) when (iscolor(@c)) {
box-shadow: @style @c;
-webkit-box-shadow: @style @c;
-moz-box-shadow: @style @c;
}
.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
.box-shadow(@style, rgba(0, 0, 0, @alpha));
}
.box {
color: saturate(@base, 5%);
border-color: lighten(@base, 30%);
div { .box-shadow(0 0 5px, 30%) }
}
views/post/edit.php
:
<div class="post-edit">...</div>
css/post.css
:
.post-edit p { ... }
.post-view h2 { ... }
widgets/friends/views/index.php
:
<div class="widget-friends-index">...</div>
widgets/friends/assets/friends.css
:
.widget-friends-index div { ... }
g-*
. Стили в global.css
.layout-
и файл layout.css
.Подключаются в index.php
после инициализации приложения, но до запуска:
$app = Yii::createApplication('CWebApplication', $config);
include 'global.php';
$app->run();
Примеры:
function app() {
return Yii::app();
}
function user() {
return Yii::app()->user;
}
function db() {
return Yii::app()->db;
}
function t($message, $params, $category = 'myproject') {
return Yii::t($category, $message, $params);
}
function h($text) {
return CHtml::encode($text);
}
function l(…) {
return CHtml::link(…);
}
function param($name, $default = null) {
return isset(Yii::app()->params[$name] ? Yii::app()->params[$name] : $default);
}