PHP-CI4系列-框架介绍

本文对CI4的整个框架做一下简单的介绍和补充,如果没有涉及的内容请参考其官网的用户手册

安装

CI4安装有三种方式:下载安装、composer、git
1.下载安装
最快捷的方式,直接在官网上下载最新的包,解压后即可作为一个项目,在此基础上进行开发。解压后的目录如下:
image.png
其中只要保留这些文件和文件夹即可:app、public、system、writable、.editorconfig、env、license.txt、README.md。其他文件和文件夹均可不要,说明一下如果你需要用composer进行包管理,请保留composer.json。
2.composer安装
需要熟悉composer,具体安装步骤请参考官网composer安装
3.git安装
CI4的github里fork一个项目,在通过git clone到本地,此时与第一种方式无差异。如果需要git管理项目,推荐此方式。

框架结构

1.app

官方原话:
image.png
项目的应用目录,官方说支持多个应用目录,我也试过但是发现并不靠谱,建立多个项目是涉及更改部分文件的路径,有些是system目录下的核心文件,不是很友好,也比较危险。建议不要尝试。
目录下的内容比较多,也是我们的主要编码区,下一篇详细说明。

2.public

官方原话:
image.png
对外可访问的目录,index.php就在这里,因此这个目录相当于根目录,如果不设置为apache的根目录,访问时路由会有问题。
从这可以看出如果项目中的静态资源也必须放在这里,否则是无法访问的

  • 2.1 .htaccess
    apache的配置文件,注意两段代码:
    第一段,用来去掉地址栏的www,为什么要注意呢?因为google浏览器的一个策略:会自动隐藏www,如果没有这段,在前后端开发中会出现跨域访问问题,因为www.example.com和example.com是不同的域名。

        # Rewrite "www.example.com -> example.com"
        RewriteCond %{HTTPS} !=on
        RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
        RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

    第二段,用来去掉地址栏的index.php

        # Checks to see if the user is attempting to access a valid file,
        # such as an image or css document, if this isn't true it sends the
        # request to the front controller, index.php
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php/$1 [L]
  • 2.2 index.php
    框架的入口文件,内容比较简单,两件事:判断php版本和加载system并启动
3.system

框架核心,该文件夹下的内容都不要动。框架的核心源代码会进行专门介绍,大家一起来学习。
官方原话:
image.png

4.writable

框架的上下载文件、缓存文件、日志文件等需要经过框架才可能访问。静态资源要放在public里,放在这里无法直接访问。

  • 4.1 cache
    框架运行期间的缓存文件
  • 4.2 logs
    框架运行期间的日志信息,可在/app/Config/Logger.php中的$threshold变量调整需要打印的日志级别。开发调试特别有用,生产环境请慎重选择。
  • 4.3 session
    框架启用session后会在该目录下生成session文件,框架默认使用文件驱动管理session,也可以更改为数据库,具体请看
  • 4.4 uploads
    框架可选的文件上传路径,需要注意的是如果文件上传到此目录,是无法使用静态资源进行直接访问,需要通过框架路由访问,因此建议上传文件的路径直接设置到public目录下。也可能是我的使用方式不对,这块有空再研究。
    官方原话:
    image.png
  • 4.5 env
    测试环境的配置,composer下使用。

总结

从安装和框架的结构来讲,CI4还是很容易入手的,如果是从CI3过来会发现框架结构变化很大,这里看到一些larval和yii的影子,应该是从它们借鉴的吧,毕竟CI3不是这样的。

你可能感兴趣的:(php,ci)