发新话题
打印

安装和配置ThinkPHP

安装和配置ThinkPHP

ThinkPHP框架本身无需安装,包含在下载包中的示例项目需要有少许的安装过程,包括数据库的导入和项目部署等。
本章带你了解ThinkPHP的各种配置定义方式和框架的一些配置项目。

ThinkPHP还在不断完善,让项目配置更加方便快捷。目前版本已经支持在后台管理项目配置项目。

入口文件
ThinkPHP框架采用单一入口模式部署项目,所以,每个项目至少需要一个入口文件来执行项目。入口文件并不一定是指index.php文件,虽然通常都这么设置。一个项目的入口文件可以放置在WEB目录下面任何需要的位置,区别仅仅在于读取的ThinkPHP系统目录的路径就不同而已。
对于一个项目来说,入口文件其实没有做任何与项目本身相关的逻辑或者处理,而仅仅是实例化一个ThinkPHP项目实例而已,所以,建议不要在入口文件里面做过多的处理工作,以导致额外的维护工作量。

一个入口文件的标准写法是:(假设该入口文件是位于项目目录下面的index.php文件)


  • // 定位ThinkPHP系统目录
  • define('THINK_PATH', '../ThinkPHP');
  • // 定义WEB根目录
  • define('WEB_ROOT','../');
  • //定义项目名称,如果不定义,默认为入口文件名称
  • define('APP_NAME', 'Admin');
  • // 定义项目路径
  • define('APP_PATH', '.');
  • // 加载配置文件 (数据库配置文件)
  • require("../config.php");
  • // 加载框架公共入口文件
  • require(THINK_PATH."/ThinkPHP.php");
  • //实例化一个网站应用实例
  • $App = new App();
  • //应用程序初始化
  • $App->init();
  • //启动应用程序
  • $App->exec();



如果你把ThinkPHP所在路径添加到了PHP的include_path中,那么THINK_PATH可以无需定义。APP_NAME如果不定义,则默认为入口文件名。ThinkPHP的项目配置文件和FCS有所区别,就是把数据库配置从项目配置文件中分离出来,因为大多数的应用都是几个项目使用同一个数据库,如果你的项目不符合该条件,也一样可以加载不同的数据库配置文件来兼容。而其他的项目配置项目则有两种选择,要么使用项目配置文件,要么使用数据库存储(需要后台支持)。
另外之所以把init操作和exec操作分开执行,也是考虑有些应用的特殊需要。如果你还是觉得这样的入口文件定义觉得很复杂,那么可以另外封装一个更简单的公共入口文件。
无论你的项目有多么复杂或者多名简单,入口文件都是不变的,事实上,入口文件什么也没做,但是却必不可少。你可以为你的项目在多个位置定义多个入口文件,这并不违反框架的规则,而且也不影响项目的运行。再次强调,不要在项目入口文件里面添加任何逻辑处理代码。

项目配置
ThinkPHP框架为每个项目设置了自己的配置文件目录,这样的处理是为了让WEB应用更加组件化,减少依赖和耦合程度。原则上,每个项目除了需要依赖ThinkPHP系统核心外,不应当依赖任何其他应用或者项目。反之,只有ThinkPHP本身才有权利调度不同的模块或者应用项目。很明显,这是一个中央集权的体现,呵呵~

说到ThinkPHP的配置文件,其实蕴含了很多功能在里面,但往往都被开发人员忽略了,因为他们在开发过程中都沿袭了直接修改项目配置缓存文件的方式。事实上,ThinkPHP框架对项目配置文件的定义支持很多格式,目前支持的有PHP数组、常量定义文件、INI配置文件、XML配置文件和PHP对象,以及数据库存储配置。项目配置文件统一使用App作为文件名,后缀根据格式而不同。如果项目配置目录下面存在多个配置文件,则系统会按照目录遍历方式取得第一个配置文件,不管以何种方式进行配置定义,系统在读取配置文件后会转换为常量定义,并且生成一个默认名称为_appDefine.php的缓存配置定义文件。系统在第二次运行的时候,就不需要重新解析配置文件,而是直接载入生成的项目缓存配置文件。
如果没有找到任何可用的配置文件,系统会尝试读取数据库配置表(需要根据框架的表结构来订阅)并生成一个缓存配置文件。

实际开发中使用比较多的配置方式是采用常量定义文件,因为这种方式不需要再次解析为常量。而且容易定义数据类型。例如:
  • //采用常量定义
  • define('DEBUG_MODE',true);
  • //如果使用ini配置文件,写法换成
  • debug_mode = on
  • //注意所有定义变量在解析成常量定义的时候,统一转换成大写,所以不要同时定义debug_mode和DEBUG_MODE。
  • //如果换成PHP数组方式定义,格式为:
  • <?php return array{ 'DEBUG_MODE' => true,);?>
  • //注意:必须使用return返回数组定义。
  • //如果使用XML配置方式,格式如下:
  • <?xml version='1.0' encoding='utf-8' ?>
  • <config><debug_mode>1</debug_mode>
  • </config>


原则上,每个项目配置文件除了定义ThinkPHP所需要的配置参数之外,开发人员可以在里面添加项目需要的一些配置参数,系统必须的配置参数请查看后面的配置参数列表。
在后面的如何管理项目配置一节,我们会讲到使用管理后台来在线修改和增加项目配置。
通常来说,最合理的配置方式是把ThinkPHP框架运行需要的一些配置和不经常修改的一些配置项目放到配置文件中,然后把一些经常需要调整的参数放到数据库管理,以及在后台添加更多的项目私有设置。
谁说偶不帅~~~~砍列他

TOP

发新话题