首先需要使用content方法连接上Memcached服务器,代码如下所示。接下来将继续使用Memcache成员方法对缓存数据库进行操作。stats cachedump:显示slabs指定范围内的缓存项,例如stats cachedump 0,3。......
2023-11-04
前面多次出现的select方法为Model类的一个成员方法,该方法用于列出所有符合条件的数据。在数据库开发中,查询和插入数据是同等重要的,ThinkPHP对数据的插入、更新等都做了高度封装,系统提供create方法,用于创建数据对象。
所谓的数据对象就数据字段与数据表之间的关系,数据会被映射为类成员,然后再与数据表映射,最后实现数据的插入或更新。对开发者而言,这一过程不需要关心,只需要在表单中设置好字段(表单元素),系统会自动建立好映射关系。create方法是ThinkPHP最基础和最强大的数据操作方法,该方法是连贯操作、CURD操作的集合,包括了数据创建、数据检验、表单验证、自动完成等实用功能,接下来将详细介绍create方法。
1.create创建数据流程
create的数据源由Post表单提供,一般情况下开发者不需要做任何的更改,即可让表单元素中的数据自动映射为数据表中的数据。例如表单中有username表单元素,那么该元素会自动被映射为数据表中的username字段,在数据创建的过程中,create方法会自动对数据进行处理,确保数据的安全和有效。过程如图7-2所示。
数据对象创建成功后,该对象被存放于内存中,此时可以使用Model类中的add方法对数据进行保存或更新操作(create方法自动判断是保存还是更新)。
图7-2 create创建数据流程
2.create数据操作
前面介绍了create方法的运行过程,读者只需要理解即可,在实际应用开发中创建数据的过程是极其简单的。下面将结合示例代码,介绍create方法的实际应用,加深对create方法的认识。
首先在Index控制器中创建一个用于接受用户输入的表单页面,这里将控制器动作命名为add_article,代码如下所示。
(www.chuimin.cn)
add_article动作对应的add_article.html页面代码如下所示。
在上述代码中,在表单中共定义了5个字段,分别为title、add_user、area、category、content。其中area、category使用了表单列表元素,content使用了ThinkPHP内置的富文本编辑器,所以需要使用<taglib name="tp"/>额外引入tp扩展标签类库,最终呈现效果如图7-3所示。
在上述代码中,表单提交页面为__URL__/add,即当前控制器中的add动作。接下来的操作均在add动作中完成,如以下代码所示。
图7-3 add_article.html页面效果
如上述代码所示,使用M函数直接实例化数据表tpk_article,读者也可以在自定义模型中完成。然后使用create方法创建数据,创建的过程不需要开发者手动赋值,系统会直接将表单中的表单元素直接与tpk_article数据表进行映射。但是,由于表单中没有add_time元素,这里可以直接以对象的方式为articleObj数据对象添加类成员。最后的结果就是添加一个add_time表字段,该字段的值为当前时间戳。一切完成后,此时数据对象存放于内存中,使用add方法进行提交,完成整个create创建数据的过程。
有关PHP MVC开发实战的文章
首先需要使用content方法连接上Memcached服务器,代码如下所示。接下来将继续使用Memcache成员方法对缓存数据库进行操作。stats cachedump:显示slabs指定范围内的缓存项,例如stats cachedump 0,3。......
2023-11-04
接下来将使用CodeIgniter实现一个简单的新闻列表,用户点击列表中的新闻标题将会进入新闻的正文页面,通过该例子演示CodeIgniter实现MVC开发的流程。在CodeIgniter中,控制器命名规则比较灵活,它不需要加前缀或后缀,一个普通的文件即可。......
2023-11-04
Json能够应用在许多场合,包括PHP本身就提供了对Json的反序列化操作。事实上,Json在传送大量数据时本身是存在溢出的,所以在设计时服务端要尽量避免输出大量Json数据。要达到前后台分离设计,使用Json通信最好不过了,因为主流的UI设计框架都对Json提供了完善的支持,下面将以Jquery为基础,详细介绍Ajax与Json的开发过程。由于使用Jsonp进行异步获取数据,所以Ajax异步通信变得简单。......
2023-11-04
ThinkPHP的模板引擎高效之处在于灵活的视图标签,熟悉这些标签的使用方式将能够提高视图模板的设计水平。接下来将从基本的创建视图开始,然后深入介绍默认视图引擎的使用。创建一个视图可分为以下几个步骤。需要注意的是,使用默认的{$}边界符,在视图模板中使用JavaScript等脚本时,有可能造成冲突。ThinkPHP内置了多种视图引擎,在默认情况下系统会使用内置的视图引擎,如果使用第三方的视图引擎,变量的分配方式会有所不同。......
2023-11-04
图6-4 网站布局ThinkPHP 3.0之前的模板引擎没有布局的概念,但开发人员可以使用include包含文件达到网站布局的效果。布局文件允许嵌套,如果网站页面更加复杂,还可以结合include等标签实现开发需求。另外,如果不需要全局布局,也可以单独在当前页面中使用布局文件,只需要在当前页面头部加上
2023-11-04
PHP 5后的版本借鉴了大量Java思想,得益于早期PHP面向过程编程支持,PHP在实现MVC设计中变得较灵活、易用。但是随着PHP 5.x的到来,各种MVC框架的出现,尤其Zend推出的Zend Framework,彻底地改变了PHP状况,使得PHP也能够实现优雅的Web编程。MVC设计模式将使代码将变得简洁。但是在MVC设计模式中,Index称为动作。当然,MVC只是一种设计模式,在开源的PHP编程世界中,已经拥有众多的MVC编程框架。......
2023-11-04
5.统计查询如果严格来区分,统计查询并不算查询语言的讲述范畴,因为在ThinkPHP中要进行字段数值统计并不需要额外定义数组元素,只需要更改显示方式即可。......
2023-11-04
熟悉Web开发的读者经过前面介绍的HTTPSQS测试,相信已经了解了怎样在PHP中提交数据入队。同时,HTTPSQS还提供了多种语言的类库,用于实现HTTPSQS入队及出队的所有操作,由于目前还没有介绍ThinkPHP扩展,所以这里不使用作者提供的类库,而是使用PHP内置的CURL函数。这里将使用HTTPSQS处理日志信息,如以下代码所示。下面将使用PHP解释器实现一个简单的HTTPSQS监控脚本。......
2023-11-04
相关推荐