samrty配置文件路径问题

    近来要学习smarty,所以第一步但然是安装和配置smarty啦!smarty的安装(也说不上安装),只需要当官网上下载一个压缩包,然后解压。解压后得到几个文件和文件夹,只需要将libs文件夹复制到本地的服务器就可以了,至于这个文件夹该不该名字无所谓,反正我重命名为smarty,接下来就是配置smarty。说来smarty的配置也不难,重要的是配置中的路径要写对,当然今天的博客内容页主要讲下自己在smarty配置中遇到路径的问题。

    网上有很多关于smarty的配置说明,但是都是都只给出一个范例,而且我觉得是没什么用的,因为只要它很难说明其他不同的情况。我的配置文件改名为:config.class.php。个人觉得这个配置文件最重要的如何include  “smarty.class.php”  这个文件。我觉得要分以下两种情况:

1.         samrty.class.php跟引用这个文件的文件(例如该文件为index.php)在同一文件夹(不过这种情况一般不会出现在真正的网站结构中),这是include可以写成include(“./smarty.class.php”),而index.php文件中也应该引用这个配置文件config.class.php,所以在index.php文件中要有require(‘./config.class.php’),这样就能正确的使用smarty,上面的两个路径是相对路径,也可以写绝对路径。因为index.php和config.class.php在同一文件夹中,所以上面的路径配置很容易。

2.         config.class.php和index.php(即引用config.class.php的那个文件,这里只是举个具体的例子)不在同一个文件,这里的配置文件中的include的文件路径可以是相对路径和绝对路径。如果是相对路径,对于index.php的require来说毫无疑问是配置文件config.class.php相对于index.php的路径,但是对于config.class.php的include来说,究竟是谁相对于谁的路径呢?一开始我就是搞不懂这个问题,所以开始的时候总是不对,现在也只是基本上知道该怎么写,但还是不知道为什么。通过我的几次试验发现,include的路径是smarty.class.php相对于index.php的路径,我一开始总以为是smarty.class.php相对于config.class.php的路径,毕竟samrty.class.php是在config.class.php这个文件中引用的。我觉得这其中的道理应该是跟include和require这两个函数的内部实现有关,是不是应该解释为require做将要引用的文件直接复制到本文件中,所以如果引用文件有include或者require相当于在本文件中include或者require所以相对路径应该是相对于本文件的。例外,还有一种方法我觉得比较好,虽然这个跟上面的解释矛盾,就是在config.class.php中的include写成define(‘root_path’,dirname(__FILE__).’/’);

include(root_path.’smarty.class.php’);这个道理应该是dirname获取当前文件的路径前缀,由于config.class.php和smarty.class.php文件在同一文件夹,所以root_path.’smarty.class.php’就表示smarty.class.php的绝对路径。但是跟上面也说了,如果index.php 的require()后,那么define(‘root_path’,dirname(__FILE__).’/’);

include(root_path.’smarty.class.php’);应该被包含到index.php文件中 ,所以dirname(__FILE__)不应该表示index.php的路径前缀吗?这个就是我现在的问题,由于还搞不懂include、require和define的具体工作原理,所以还无法解答上面的问题,等我搞清楚之后再写一篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值