用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4745|回复: 9
收起左侧

[初级] 新手注意容易混淆的两个函数

[复制链接]
发表于 2012-2-24 09:41:42 | 显示全部楼层 |阅读模式
       在看手册时,发现有两个函数(site_url()和base_url())十分的相似,开始一直没有看出来究竟有什么区别,最后看到手册中的英文后才恍然大悟,在这里分享给初学者。
      1: site_url():它是包括 config.php 中指定的 base_urlindex_page
    $config['base_url']="http://example.com/";
     $config['index_page]="index.php";
      所以:echo site_url("news/local/123");
     将会返回: http://example.com/index.php/news/local/123这个结果
     2:base_url():手册中给出的解释是This function returns the same thing as site_url, without the index_page or url_suffix being appended。返回在 config.php 中设定的 base_url.
  所以:echo base_url();
  将会返回:http://example.com/blog/post/123这个结果,少了index.php


评分

参与人数 1威望 +5 收起 理由
貝殼 + 5 赞一个!

查看全部评分

发表于 2012-2-24 14:02:00 | 显示全部楼层
本帖最后由 yuzhigang5460 于 2012-2-24 14:08 编辑

好人做到底,你只说了区别,没说使用原则。我说一下吧。
base_url()是用来获取资源的,这样不会有index.php存在,比如获取js下的某个js文件。
PHP复制代码
echo base_url("js/jquery.js");
复制代码

输出:http://example.com/js/jquery.js

site_url()主要是做链接,就比较好解释了。

另外使用mod_rewrite以便去掉url地址中间的index.php的话,CI会建议你配置$config['index_page]=""为空。那么此时site_url()和base_url()输出的 地址是一样的了。
 楼主| 发表于 2012-2-24 14:04:09 | 显示全部楼层
恩,解释的非常好、呵呵
发表于 2012-2-24 16:38:36 | 显示全部楼层
领教了,谢谢分享
发表于 2012-2-24 16:43:58 | 显示全部楼层
在Codeigniter 2.0以前,base_url()并不接受参数,2.0以后base_url()才接受参数,但site_url()一直都接受参数。

故此,Codeigniter的老用户不会把base_url()与site_url()混淆。反倒是可能没注意到base_url()在2.0以后能接受参数。
发表于 2012-3-1 18:14:53 | 显示全部楼层
领教了 ,之前一直不知道怎么分辨这两个参数
发表于 2012-4-14 12:54:54 | 显示全部楼层
base_url() 和site_url()的区别,很详细
发表于 2012-4-19 16:22:09 | 显示全部楼层
非常感谢楼主和2楼,但是好像把$config['index_page'] = 'index.php';改成$config['index_page'] = '';首页的index.php还是需要rewrite去跳转,能不能在代码中一次修改掉,谢谢!我是CI新手
发表于 2012-4-20 22:14:29 | 显示全部楼层
学习,不错!!!!感谢楼主和2L
发表于 2012-5-13 12:24:27 | 显示全部楼层
不错

本版积分规则