?
This document uses PHP Chinese website manual Release
共享的托管環(huán)境常常會(huì)對(duì)目錄結(jié)構(gòu)以及配置文件有較多的限制。然而,在大多數(shù)情況下,你仍可以通過少量的修改以在共享托管環(huán)境下運(yùn)行 Yii 2.0。
由于共享托管環(huán)境往往只有一個(gè) webroot,如果可能,請(qǐng)優(yōu)先使用基礎(chǔ)項(xiàng)目模板( basic project template )構(gòu)建你的應(yīng)用程序。參考?安裝 Yii 章節(jié)在本地安裝基礎(chǔ)項(xiàng)目模板。當(dāng)你讓應(yīng)用程序在本地正常運(yùn)行后,我們將要做少量的修改以讓它可以在共享托管服務(wù)器運(yùn)行。
用FTP或者其他的工具連接到你的托管服務(wù)器,你可能看到類似如下的目錄結(jié)構(gòu):
config
logs
www
在以上,www
?是你的 web 服務(wù)器的 webroot 目錄。不同的托管環(huán)境下名稱可能各不相同,通常是類似:?www
,?htdocs
, 和?public_html
之類的名稱。
對(duì)于我們的基礎(chǔ)項(xiàng)目模板而言,其 webroot 名為?web
?。 在你上傳你的應(yīng)用程序到 web 服務(wù)器上去之前,將你的本地 webroot 重命名以匹配服務(wù)器。 即: 從?web
?改為?www
,?public_html
?或者其他你的托管環(huán)境的 webroot 名稱。
如果你有 FTP 根目錄的寫權(quán)限,即,有?config
,?logs
?和?www
?的根目錄,那么,如本地根目錄相同的結(jié)構(gòu)上傳?assets
,?commands
?等目錄。
如果你的 web 服務(wù)器是 Apache,你需要增加一個(gè)包含如下內(nèi)容的?.htaccess
?文件到你的?web
?目錄(或者?public_html
?根據(jù)實(shí)際情況而定,是你的?index.php
?文件所在的目錄)。
Options +FollowSymLinks
IndexIgnore *
public static function merge($a, $b)
你經(jīng)常要將一個(gè)對(duì)象或者對(duì)象的數(shù)組轉(zhuǎn)換成一個(gè)數(shù)組,常見的情形是,為了通過REST API提供數(shù)據(jù)數(shù)組(或其他使用方式), 將AR模型(活動(dòng)記錄模型)轉(zhuǎn)換成數(shù)組。如下代碼可完成這個(gè)工作:
$posts = Post::find()->limit(10)->all();
$data = ArrayHelper::toArray($posts, [
'app\models\Post' => [
'id',
'title',
// the key name in array result => property name
'createTime' => 'created_at',
// the key name in array result => anonymous function
'length' => function ($post) {
return strlen($post->content);
},
],
]);
第一個(gè)參數(shù)包含我們想要轉(zhuǎn)換的數(shù)據(jù),在本例中,我們要轉(zhuǎn)換一個(gè)叫?Post
?的 AR 模型。
第二個(gè)參數(shù)是每個(gè)類的轉(zhuǎn)換映射表,我們?cè)诖嗽O(shè)置了一個(gè)Post
?模型的映射。 每個(gè)映射數(shù)組包含一組的映射,每個(gè)映射可以是:
這上面的轉(zhuǎn)換結(jié)果將會(huì)是:
[
'id' => 123,
'title' => 'test',
'createTime' => '2013-01-01 12:00AM',
'length' => 301,
]