在理解CI中应保留哪些类时遇到问题。我正在构建一个描述/销售手机的应用程序。
我希望我的所有函数(即getphone,getdetails等)都驻留在一个名为Mobile的类中 - 我知道这个文件应该叫做Mobile.php并驻留在controllers文件夹中。
我可以在Mobile.php中拥有多个功能吗? E.g。
public function getphone() {
xxx
xx
xx
}
public function getdetails() {
xxx
xx
xx
}
或者我是否需要将每个函数放在自己的类中?
我非常感谢您查看一些有效的示例代码。我已经浏览了几个小时的文档和谷歌,并尝试了URL中的各种变体来找到测试类,但没有太多运气!我甚至搞乱了路线和.htaccess ......
我想要实现的目标如下:
http:/// model / HTC-Desire /被重新路由到一个接受HTC-Desire作为参数的函数(因为我需要它进行数据库查找)。默认控制器工作正常,但此后无法正常工作。
有什么想法吗?
由于
答案 0 :(得分:12)
实际上它的工作原理如下:
控制器和模型会转到他们所知道的透视文件夹
如果要创建不是对象方法的函数,则必须创建辅助文件。更多信息: http://codeigniter.com/user_guide/general/helpers.html
现在,如果要创建自己的数据类型(不扩展模型和控制器的类),请将它们添加到库文件夹中。因此,如果我们想要创建一个类“Car”,则可以创建此文件:
class Car{
function __construct(){}
}
并将其作为car.php
保存在libraries文件夹中要创建Car类的实例,您必须执行以下操作:
$this->load->library('car');
$my_car = new Car();
此处有关图书馆的更多信息:
http://codeigniter.com/user_guide/general/creating_libraries.html
答案 1 :(得分:0)
是的,您可以在控制器类中拥有任意数量的函数。可以通过网址/class/function
访问它们。
您可以在类函数中捕获参数,但这不可取。
class Mobile extends CI_Controller{
public function getPhone($phoneModel=''){
echo $phoneModel;
//echo $this->input->post('phoneModel');
}
}
http://site.com/mobile/getPhone/HTC-Rad 理论上会回应出“HTC-Rad”。 HOWEVER ,默认情况下,CI中的URL不受特殊字符的欢迎,因此在此示例中,您可能会遇到“不允许的URI字符”错误。您最好通过电话模型(或任何其他参数)通过$_POST
到控制器。
答案 2 :(得分:0)
类可以作为Controllers
和Models
存在,因为CodeIgniter实现了MVC pattern。我建议阅读更多相关信息,以了解您的课程/功能/等。最好的组织。
在我的脑海中,Pyro CMS是使用CodeIgniter构建的应用程序,源代码可以免费使用。我确定还有其他人。
答案 3 :(得分:0)
我认为最好从一个角度来处理它,即:创建一个包含所有功能的实用程序类。 将类文件放在哪里的问题的答案是“库”文件夹。 文档中对此进行了明确说明。 将您的课程放在库文件夹中。
当我们使用“图书馆”一词时,通常是指 库目录中描述的类 本用户指南的类参考。
您可以阅读有关创建和使用库Creating Libraries — CodeIgniter 3.1.10 documentation
的更多信息。将新创建的类放置在librarys文件夹中后,只需将库加载到控制器中即可使用,如下所示:
$this->load->library('yourphpclassname');
如果希望在构造函数中接收多个参数,则必须对其进行修改以接收将是一个数组的参数,然后加载/初始化会稍有不同,如下所示:
$params = array('type' => 'large', 'color' => 'red');
$this->load->library('yourphpclassname', $params);
然后,要访问该类中的任何函数,只需执行以下操作:
$this->yourphpclassname->some_method();
如果您还有其他问题,我希望这能回答您的问题,请留下评论,我会很好地回答他们。