©
This document uses PHP Chinese website manual Release
共享的托管环境常常会对目录结构以及配置文件有较多的限制。然而,在大多数情况下,你仍可以通过少量的修改以在共享托管环境下运行 Yii 2.0。
由于共享托管环境往往只有一个 webroot,如果可能,请优先使用基础项目模板( basic project template )构建你的应用程序。参考 安装 Yii 章节在本地安装基础项目模板。当你让应用程序在本地正常运行后,我们将要做少量的修改以让它可以在共享托管服务器运行。
用FTP或者其他的工具连接到你的托管服务器,你可能看到类似如下的目录结构:
config
logs
www
在以上,www
是你的 web 服务器的 webroot 目录。不同的托管环境下名称可能各不相同,通常是类似: www
, htdocs
, 和 public_html
之类的名称。
对于我们的基础项目模板而言,其 webroot 名为 web
。 在你上传你的应用程序到 web 服务器上去之前,将你的本地 webroot 重命名以匹配服务器。 即: 从 web
改为 www
, public_html
或者其他你的托管环境的 webroot 名称。
如果你有 FTP 根目录的写权限,即,有 config
, logs
和 www
的根目录,那么,如本地根目录相同的结构上传 assets
, commands
等目录。
如果你的 web 服务器是 Apache,你需要增加一个包含如下内容的 .htaccess
文件到你的 web
目录(或者 public_html
根据实际情况而定,是你的 index.php
文件所在的目录)。
Options +FollowSymLinks
IndexIgnore *
public static function merge($a, $b)
你经常要将一个对象或者对象的数组转换成一个数组,常见的情形是,为了通过REST API提供数据数组(或其他使用方式), 将AR模型(活动记录模型)转换成数组。如下代码可完成这个工作:
$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);
},
],
]);
第一个参数包含我们想要转换的数据,在本例中,我们要转换一个叫 Post
的 AR 模型。
第二个参数是每个类的转换映射表,我们在此设置了一个Post
模型的映射。 每个映射数组包含一组的映射,每个映射可以是:
这上面的转换结果将会是:
[
'id' => 123,
'title' => 'test',
'createTime' => '2013-01-01 12:00AM',
'length' => 301,
]