我遇到代码点火器问题,我有以下代码(user_stats.php):
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class User_stats extends MX_Controller
{
function __construct() {
parent::__construct();
}
function user_stats() {
echo "Hello";
}
function detect_location() {
echo "World";
}
}
如果我通过网址调用该方法,例如http://test/user_stats/detect_location我得到输出World,但是当我加载http://test/user_stats/user_stats时,我收到错误404页面。我检查了日志,由于某种原因,请求是http://test/user_stats/index(尝试加载http://test/user_stats/user_stats时)。我的htaccess文件包含以下代码:
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
并将配置文件配置为:
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
$config['url_suffix'] = '';
任何有助于解决此问题的帮助都将受到赞赏。
由于
答案 0 :(得分:2)
基本上,您的班级名称为User_stats
,且函数名称为user_stats
。具有相同类名的函数名称将被视为构造函数。如果您移除function __construct()
并点击此网址http://test/user_stats/detect_location
,您将获得输出
Hello World
这种情况user_stats是你的构造函数
实际上你有两个构造函数,如果你保留function user_stats
,function __construct()
就没用了。对于具有相同参数的类,不能有两个构造函数。
答案 1 :(得分:0)
将函数名称user_stats()
更改为index()
并打开config/routes.php
文件
并在其中添加以下行:
$route['user_stats/user_stats'] = "user_stats/index";
注意:正如@oldlearner所说,该函数就像一个构造函数,并且在php5中已被弃用。