Codelgniter4中文手册,版本4.0.0 确保该模块(重写模块)在主配置文件中已被启用(未注释),例如apache:2/conf/ httpd.conf: LoadModule rewrite module modules/mod rewrite.so 与此同时,确保默认的文档根目录<Directory>元素中也启用了该模块,在 “AllowOverride”设置中: <Directory "/opt/lamp7.2/apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> 虚拟主机 我们推荐使用虚拟主机的配置来运行你的应用。你可以为每个应用设置不同的别名。 确保虚拟主机模块在主配置文件中启用(未注释),例如apache2/conf/httpd.conf: LoadModule vhost_alias module modules/mod_vhost alias.so 在你的主机配置文件(hosts文件)里增加一个主机别名,在unix类型的平台上通常 是/etc/hosts,而在Windows上通常是c:/Windows/System:32/drivers./etc/hosts 。在该文件中增加一行,比如“my project..local'”或“myproject.test”,举例来说: 127.0.0.1 myproject.local 在虚拟主机配置中,为你的webapp增加一个<VirtualHost:>元素,例如在apache?2/ conf/extra/httpd-vhost.conf中: <VirtualHost *80> DocumentRoot "/opt/lamp7.2/apache2/htdocs/myproject/public" ServerName myproject.local ErrorLog "logs/myproject-error_log" CustomLog "logs/myproject-access_log"common </VirtualHost> 如果你的项目目录并不位于Apache的文档根目录下,你的<VirtualHost>元素就需 要一个嵌套的<Directory>元素来为服务器访问这些文件提供授权。 测试 上述配置完成后,你的webapp应该就可以通过在浏览器上输入http:/myproject. 1oca1的URL来进行访问了。 每当你更改了它的配置后,Apache都需要被重新启动 12 章节2.开始
CodeIgniter4 中文手册, 版本 4.0.0 确保该模块(重写模块)在主配置文件中已被启用(未注释),例如 apache2/conf/ httpd.conf: LoadModule rewrite_module modules/mod_rewrite.so 与 此 同 时, 确 保 默 认 的 文 档 根 目 录 <Directory> 元 素 中 也 启 用 了 该 模 块, 在 “AllowOverride”设置中: <Directory "/opt/lamp7.2/apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> 虚拟主机 我们推荐使用虚拟主机的配置来运行你的应用。你可以为每个应用设置不同的别名。 确保虚拟主机模块在主配置文件中启用(未注释),例如 apache2/conf/httpd.conf: LoadModule vhost_alias_module modules/mod_vhost_alias.so 在你的主机配置文件(hosts 文件)里增加一个主机别名,在 unix 类型的平台上通常 是 /etc/hosts ,而在 Windows 上通常是 c:/Windows/System32/drivers/etc/hosts 。在该文件中增加一行,比如“myproject.local”或“myproject.test”,举例来说: 127.0.0.1 myproject.local 在虚拟主机配置中,为你的 webapp 增加一个 <VirtualHost> 元素,例如在 apache2/ conf/extra/httpd-vhost.conf 中: <VirtualHost *:80> DocumentRoot "/opt/lamp7.2/apache2/htdocs/myproject/public" ServerName myproject.local ErrorLog "logs/myproject-error_log" CustomLog "logs/myproject-access_log" common </VirtualHost> 如果你的项目目录并不位于 Apache 的文档根目录下,你的 <VirtualHost> 元素就需 要一个嵌套的 <Directory> 元素来为服务器访问这些文件提供授权。 测试 上述配置完成后,你的 webapp 应该就可以通过在浏览器上输入 http://myproject. local 的 URL 来进行访问了。 每当你更改了它的配置后,Apache 都需要被重新启动 12 章节 2. 开始
Codelgniter4中文手册,版本4.0.0 通过Vagrant部署主机 虚拟化也是一个有效地测试你希望部署的环境中的webapp的实现情况的方式,即使你 是在一个不同环境中进行部署的话。即使你为两个环境使用了相同的平台,虚拟化也 可以为测试提供独立的环境。 相关的代码位于VagrantFile.dist中,该文件也可以被复制到VagrantFile里,并 根据你的系统的情况来进行增减。例如为特定的数据库或缓存引擎提供访问。 设置 我们假设了你已经安装了VirtualBox和Vagrant的指定平台版本。 我们的Vagrant配置文件默认你在系统中使用ubuntu/bionice64 Vagrant box。 Vagrant配置文件假定你是这样进行安装的: vagrant box add ubuntu/bionic64 测试 设置完成后,你就可以用以下命令在虚拟机中部署你的webapp vagrant up 你的webapp就可以通过http://1 ocalhost:8080来访问,而当次构建的代码覆盖率 测试报告可以通过http:/1 ocalhost:8081,用户指南通过http://1 ocalhost:8082 进行访问。 2.1.4从老版本升级 请阅读你需要升级的版本所对应的升级指南 从Codelgniter3系列版本升级到4系列版本 CodeIgniter4是对该框架的重写,并且不向前兼容(对以前的版本不兼容)。比起升级你 的应用,更为合适的是转换和重写它。当你做完了这一步(即已经升级到CodeIgniter4) 之后,在CodeIgniter4的不同版本间进行升级就会轻而易举。 The "lean,mean and simple"philosophy has been retained,but the implementation has a lot of differences,compared to CodeIgniter 3. 升级过程中并没有12步检查列表之类的东西。取而代之的是,在一个新的项目文件夹 里开始CodeIgniter4的重新部署开始与使用本框架,并开始转换和整合你的应用部 件。下面我们会试着指出最需要注意的点。 2.1.安装 13
CodeIgniter4 中文手册, 版本 4.0.0 通过 Vagrant 部署主机 虚拟化也是一个有效地测试你希望部署的环境中的 webapp 的实现情况的方式,即使你 是在一个不同环境中进行部署的话。即使你为两个环境使用了相同的平台,虚拟化也 可以为测试提供独立的环境。 相关的代码位于 VagrantFile.dist 中,该文件也可以被复制到 VagrantFile 里,并 根据你的系统的情况来进行增减。例如为特定的数据库或缓存引擎提供访问。 设置 我们假设了你已经安装了 VirtualBox 和 Vagrant 的指定平台版本。 我们的 Vagrant 配置文件默认你在系统中使用 ubuntu/bionic64 Vagrant box 。 Vagrant 配置文件假定你是这样进行安装的: vagrant box add ubuntu/bionic64 测试 设置完成后,你就可以用以下命令在虚拟机中部署你的 webapp vagrant up 你的 webapp 就可以通过 http://localhost:8080 来访问,而当次构建的代码覆盖率 测试报告可以通过 http://localhost:8081 ,用户指南通过 http://localhost:8082 进行访问。 2.1.4 从老版本升级 请阅读你需要升级的版本所对应的升级指南 从 CodeIgniter 3 系列版本升级到 4 系列版本 CodeIgniter 4 是对该框架的重写,并且不向前兼容(对以前的版本不兼容)。比起升级你 的应用,更为合适的是转换和重写它。当你做完了这一步(即已经升级到 CodeIgniter4) 之后,在 CodeIgniter4 的不同版本间进行升级就会轻而易举。 The“lean, mean and simple”philosophy has been retained, but the implementation has a lot of differences, compared to CodeIgniter 3. 升级过程中并没有 12 步检查列表之类的东西。取而代之的是,在一个新的项目文件夹 里开始 CodeIgniter 4 的重新部署开始与使用本框架 ,并开始转换和整合你的应用部 件。下面我们会试着指出最需要注意的点。 2.1. 安装 13
Codelgniter4中文手册,版本4.0.0 CI4中我们并没有完全迁移和重写全部的CI3库!参考Codelgniter4路线图中的最新 列表! 在项目转换之前请务必阅读用户指南! 下载 ·CI4同样可以通过解压-运行的zip或tarball压缩文件的格式进行使用,其中包 含有用户指南(在docs子目录中) ·它也可以通过Composer进行安装 命名空间 ·CI4构建基于PHP7.2+的版本,框架中除了辅助函数的所有部分都进行了命名 空间标注。 应用结构 ·application目录被重命名为app,而框架中仍I旧存在着system文件夹,有着 与以往版本一样的功能。 ·本框架现在提供了一个publ1c目录,希望你可以将其用于项目的根目录 There is also a writable folder,to hold cache data,logs,and session data ·app目录与CI3中的application目录类似,不过有着一些命名的变更,以及将 一些子目录移动到ritable目录下。 ·如今已经没有一个嵌套的application,/core目录了,由于我们已经提供了一套 不同的机制来扩展框架核心(如下所示)。 加载类文件 ·由于对框架组件的引用如今已作为属性动态注入到你的控制器中,现在已经不存 在一个CodeIgniter的”超级对象”了。 类如今已经按需加载了,并且组件也是通过Services进行维护(服务) ·类加载器自动处理PSR4风格的类文件定位,对于那些以App、(application 目录)和~CodeIgniter system目录)为顶级命名空间的类。而通过对composer 自动加载的支持与智能假设机制,框架甚至可以定位你的那些并未命名空间声明 的模型和库文件。 ·你可以配置类的自动加载来支持任何你喜欢的应用结构,包括”HMVC”风格的 (译者注:按等级划分的MVC模式,简单的解释就是把MVC又细分成了多个子 MVC,每个模块就分成一个MVC) 控制器 ·控制器继承了CodeIgniter\\Controller类,而非CI_Controller类 ·控制器不再需要一个构造函数了(用于调用CI魔术方法),除非这是你自己定义 的基类控制器的一部分 ·CI提供了Request(请求)and Response(响应)对象供你使用,比起CI3的 风格来说更为强大 14 章节2.开始
CodeIgniter4 中文手册, 版本 4.0.0 CI4 中我们并没有完全迁移和重写全部的 CI3 库!参考 CodeIgniter 4 路线图 中的最新 列表! 在项目转换之前 请务必阅读用户指南! 下载 • CI4 同样可以通过解压-运行的 zip 或 tarball 压缩文件的格式进行使用,其中包 含有用户指南(在 docs 子目录中) • 它也可以通过 Composer 进行安装 命名空间 • CI4 构建基于 PHP7.2+ 的版本,框架中除了辅助函数的所有部分都进行了命名 空间标注。 应用结构 • application 目录被重命名为 app ,而框架中仍旧存在着 system 文件夹,有着 与以往版本一样的功能。 • 本框架现在提供了一个 public 目录,希望你可以将其用于项目的根目录 • There is also a writable folder, to hold cache data, logs, and session data • app 目录与 CI3 中的 application 目录类似,不过有着一些命名的变更,以及将 一些子目录移动到 writable 目录下。 • 如今已经没有一个嵌套的 application/core 目录了,由于我们已经提供了一套 不同的机制来扩展框架核心(如下所示)。 加载类文件 • 由于对框架组件的引用如今已作为属性动态注入到你的控制器中,现在已经不存 在一个 CodeIgniter 的”超级对象”了。 • 类如今已经按需加载了,并且组件也是通过 Services 进行维护(服务) • 类加载器自动处理 PSR4 风格的类文件定位,对于那些以 App``(application 目录)和 ``CodeIgniter system 目录)为顶级命名空间的类。而通过对 composer 自动加载的支持与智能假设机制,框架甚至可以定位你的那些并未命名空间声明 的模型和库文件。 • 你可以配置类的自动加载来支持任何你喜欢的应用结构,包括”HMVC”风格的 (译者注:按等级划分的 MVC 模式,简单的解释就是把 MVC 又细分成了多个子 MVC,每个模块就分成一个 MVC) 控制器 • 控制器继承了 \\CodeIgniter\\Controller 类,而非 CI_Controller 类 • 控制器不再需要一个构造函数了(用于调用 CI 魔术方法),除非这是你自己定义 的基类控制器的一部分 • CI 提供了 Request (请求)and Response (响应)对象供你使用,比起 CI3 的 风格来说更为强大 14 章节 2. 开始
Codelgniter4中文手册,版本4.0.0 ·如果你需要一个基类控制器(比如CI3中的MY_Controller),那么请在你需要 的地方使用就行。比如BaseController extends Controller,并使用你自己的 类来继承BaseContro1ler 模型 ·模型继承了\\CodeIgniter\Model而非CI Model ·CI4的模型拥有更多的功能,包括动态数据库连接,基础的CRUD(增删改查), 模型内验证和自动分页功能。 ·CI4同样拥有可供你构建的Entity(实体)类,用于实现更为丰富的数据表映射 功能 ·取消使用CI3的$this->1oad->model(x);,而是使用模型的命名空间模式来调 用$this->x=newX();。 视图 ·你的视图看起来与从前类似,但是却是以完全不同的方式调用…取消使用 $this->load->view(x);,而是通过echo view(x);。 ·CI4支持视图单元,以构建分片响应 ·模板处理器一如过往,但是在功能上有了显著的提升 库 ·你的应用类仍I旧可以深入访问app/Libraries,但这不是必须的。 ·取消使用CI3的$this->1oad->library(x);调用方式,如今你可以使用组件的 命名空间模式来调用$this->x=newX(); 辅助函数 ·辅助函数与以往大致相似,不过有一部分被简化了 事件 ·Hooks(钩子)如今已经被Events(事件)所取代 ·取消使用CI3的$hook['post_controller_constructor']调用 方式,如今你可以使用命名空间CodeIgniter\Events\Events; 下的 Events:on('post_controller_constructor',['MyClass', 'MyFunction']);。 ·事件保持启用状态并全局可用。 扩展框架 ·你不需要一个core目录来保存类似MY.··的框架组件扩展或替代品。 ·在库目录下,你不需要类似MYx之类的类来继承或取代CI4的框架部分。 ·你可以在任何地方创建这样的类,并加入适当的自定义组件来代替默认的那些组 件。 2.1.安装 15
CodeIgniter4 中文手册, 版本 4.0.0 • 如果你需要一个基类控制器(比如 CI3 中的 MY_Controller),那么请在你需要 的地方使用就行。比如 BaseController extends Controller ,并使用你自己的 类来继承 BaseController 模型 • 模型继承了 \\CodeIgniter\\Model 而非 CI_Model • CI4 的模型拥有更多的功能,包括动态数据库连接,基础的 CRUD(增删改查), 模型内验证和自动分页功能。 • CI4 同样拥有可供你构建的 Entity (实体)类,用于实现更为丰富的数据表映射 功能 • 取消使用 CI3 的 $this->load->model(x); ,而是使用模型的命名空间模式来调 用 $this->x = new X();。 视图 • 你的视图看起来与从前类似,但是却是以完全不同的方式调用……取消使用 $this->load->view(x); ,而是通过 echo view(x);。 • CI4 支持视图单元,以构建分片响应 • 模板处理器一如过往,但是在功能上有了显著的提升 库 • 你的应用类仍旧可以深入访问 app/Libraries,但这不是必须的。 • 取消使用 CI3 的 $this->load->library(x); 调用方式,如今你可以使用组件的 命名空间模式来调用 $this->x = new X(); 辅助函数 • 辅助函数与以往大致相似,不过有一部分被简化了 事件 • Hooks(钩子)如今已经被 Events(事件)所取代 • 取 消 使 用 CI3 的 $hook['post_controller_constructor'] 调 用 方 式, 如 今 你 可 以 使 用 命 名 空 间 CodeIgniter\Events\Events; 下 的 Events::on('post_controller_constructor', ['MyClass', 'MyFunction']); 。 • 事件保持启用状态并全局可用。 扩展框架 • 你不需要一个 core 目录来保存类似 MY_... 的框架组件扩展或替代品。 • 在库目录下,你不需要类似 MY_x 之类的类来继承或取代 CI4 的框架部分。 • 你可以在任何地方创建这样的类,并加入适当的自定义组件来代替默认的那些组 件。 2.1. 安装 15
Codelgniter4中文手册,版本4.0.0 2.1.5故障排除 以下是一些常见的安装问题,以及建议的解决方法。 我必须在我的URL中包含index.php 如果“/mypage/find/apple“类似的URL“/index.php/mypage/fnd/apple“不起作用,但 类似的URL,则你的“.htaccess“规则(对于Apache)未正确设置。 仅加载默认页面 如果你发现无论你在URL中放入什么内容,只会加载默认页面,可能是你的服务器 不支持提供搜索引擎友好URL所需的REQUEST_URI变量。首先,打开*applica tion/Config/App.php*文件并查找URI协议信息。它会建议你尝试一些备用设置。如 果在你尝试此操作后仍然无效,则需要强制CodeIgniter向你的网址添加问号。为此, 请打开*application/Config/App.php*文件并更改 public $indexPage ='index.php'; To this: public $indexPage 'index.php?'; 该教程给出了404错误:( 你无法使用PHP的内置Wb服务器来学习本教程。它不处理正确路由请求所需的 :htaccess文件。 解决方案:使用Apache为你的站点提供服务。 2.1.6 Codelgniter仓库 The CodeIgniter4开源项目有着属于它自己的Github组织. 对于感兴趣的开源贡献者来说,有以下几个开发仓库。 仓库 受众 描述 Codelgniter4 贡献者 项目核心仓库,包括测试和源文档结构 translations 开发者 系统信息的翻译 coding-standard 贡献者 代码风格的统一和相关规约 以下是几个开发的仓库,在安装指南里提到过。当新版本发布时,development仓库将 执行自动构建,该仓库不能被直接提交代码。 16 章节2.开始
CodeIgniter4 中文手册, 版本 4.0.0 2.1.5 故障排除 以下是一些常见的安装问题,以及建议的解决方法。 我必须在我的 URL 中包含 index.php 如果 ‘‘/mypage/find/apple‘‘类似的 URL‘‘/index.php/mypage/find/apple‘‘不起作用,但 类似的 URL ,则你的 ‘‘.htaccess‘‘规则(对于 Apache)未正确设置。 仅加载默认页面 如果你发现无论你在 URL 中放入什么内容,只会加载默认页面,可能是你的服务器 不支持提供搜索引擎友好 URL 所需的 REQUEST_URI 变量。首先,打开 *application/Config/App.php* 文件并查找 URI 协议信息。它会建议你尝试一些备用设置。如 果在你尝试此操作后仍然无效,则需要强制 CodeIgniter 向你的网址添加问号。为此, 请打开 *application/Config/App.php* 文件并更改 public $indexPage = 'index.php'; To this: public $indexPage = 'index.php?'; 该教程给出了 404 错误:( 你无法使用 PHP 的内置 Web 服务器来学习本教程。它不处理正确路由请求所需的 ‘.htaccess‘文件。 解决方案:使用 Apache 为你的站点提供服务。 2.1.6 CodeIgniter 仓库 The CodeIgniter 4 开源项目有着属于它自己的 Github 组织. 对于感兴趣的开源贡献者来说,有以下几个开发仓库。 仓库 受众 描述 CodeIgniter4 贡献者 项目核心仓库,包括测试和源文档结构 translations 开发者 系统信息的翻译 coding-standard 贡献者 代码风格的统一和相关规约 以下是几个开发的仓库,在安装指南里提到过。当新版本发布时,development 仓库将 执行自动构建,该仓库不能被直接提交代码。 16 章节 2. 开始