文档章节

【转载】 PHP编程技巧:$content->add_post()

OSC老司机
 OSC老司机
发布于 2015/12/28 15:17
字数 610
阅读 34
收藏 0

全宇宙最好的编程语言 PHP 入门是非常简单的,但编程是件非常复杂的事情,代码的性能、兼容性、维护成本等等都是需要考虑的,这篇内容就说说 PHP 的编程技巧,笔者水平有限,只能将自己知道的东西分享出来,高手请略过。

下面以【爱玩电脑】后台添加内容的代码片段做示例,主要是将程序的“逻辑判断”和“操作过程”还有“视图”分开,即大家常说的 MVC 模式。

先看“逻辑判断”的部分代码 content.php , 主要使用 php switch() 进行逻辑判断实现操作控制 。

$action = get('action');
switch ($action)
{
	//添加内容
	case 'add':
		$data['catalog_option'] = $content->catalog_option();
		template2('content_add', $data);
		break;

	//添加内容处理
	case 'add_post':
		$array = $content->add_post();
		echo json_encode($array);
		exit();
		
		break;
}

$content->add_post()

浏览器访问负责“逻辑判断”的文件 content.php ,程序中通过 $action 变量判断操作,然后调用负责“操作过程”的文件 class/content.php 中相应的方法。

content::add_post()

/**
 * add_post()
 * return array('error', 'message')
 */
public function add_post ()
{
	$title = post('title');
	$catalog = post('catalog');
	$keywords = str_replace(',', ',', post('keywords'));
	$description = htmlspecialchars(post('description'));
	$tags = str_replace(',', ',', post('tags'));
	$text = post('text');
	$time = post('time');
	$time = strtotime($time) ? strtotime($time) : time();
	$comment = post('comment');
	$comment = $comment ? 1 : 0;
	$remote = post('remote');
	$yuan = post('yuan');
	$yuan = $yuan ? 1 : 0;
	$thumb = post('thumbInput');

	//表单验证
	if (!$title || !$text)
		return array("error"=>1, 'message'=>'标题和正文必须填写');

	$id = $this->mysql->insert('INSERT INTO `xxx_content` (`user_id`, `catalog_id`, `update_time`, `allow_comment`, `visit`, `title`, `tags`, `keywords`, `description`, `thumb`, `yuan`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);', array(user::id(), $catalog, $time, $comment, rand(10, 99), $title, $tags, $keywords, $description, $thumb, $yuan));
		
	if ($id <= 0)
	{
		return array("error"=>1, 'message'=>'添加失败 Table_1');
	}
	else
	{
		$text = $this->text_tag_link($text);

		$this->update_tag($tags, $id);
		
		if ($remote)
			$text = $this->remote($text);

		$ok = $this->mysql->insert('INSERT INTO `xxx_content_text` (`content_id`, `text`) VALUES (?, ?);', array($id, $text));
		if ($ok <= 0)
			return array("error"=>1, 'message'=>'添加失败 Table_2');
		else
			return array("error"=>0, 'message'=>$id);
	}
}

因为整个操作过程都在 conntent::add_post() 中完成所以代码比较长,主要实现了表单验证、正文处理、设置标签、下载远程图片等功能。

因为成功增加内容后需要一个“查看内容”的按钮,所以 content::add_post() 中将所有提示信息以数组形式返回 array('error'=>true, 'message'=>'abc....') ,方便 content.php 更容易与前台对接。

至于“视图”Aowana 做得非常简单,并没有使用模板引擎,只是写了个 template2() 方法把视图和程序分离而已,下面是调用视图的示例:

//添加内容
case 'add':
	$data['catalog_option'] = $content->catalog_option();
	template2('content_add', $data);
	break;

~完~


本文转载自:http://www.aowana.com/content.php?id=469

共有 人打赏支持
OSC老司机
粉丝 13
博文 32
码字总数 3045
作品 0
宁德
个人站长
私信 提问
CI 2.2.0可以使用AR模式操作Oracle 10g数据库

一、控制器 <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Topics extends CIController { function construct() { parent::construct(); $this->load->......

康师傅
2014/08/18
0
0
WordPress统计文章阅读次数 代码实现的方法

实现wordpress文章阅读次说统计真不容易,在网上搜了很多种方法,nnd介绍的都不详细,有些压根行不通,还好几次把网站后台给弄崩溃了,弄得网站后台都打不开,真坑爹,匹夫经过多次尝试和总结...

JK_OPERA
2014/05/05
0
0
《PHP基础知识总结》系列分享专栏

总结PHP基础知识,对初学者还是高手都值得参考巩固。 《PHP基础知识总结》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201728.html 文章 PHP检查库或函数是否...

kaixin_code
11/05
0
0
php中的魔术方法

魔术方法是以两个下划线""开头、具有特殊作用的一些方法,可以看做php的"语法糖"。 语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更"甜蜜"的语法。语法糖往往给程序员提供了更实...

rin9958
2016/03/27
65
1
php性能优化方法

优化php性能的五个实用技巧: 以下是五个优化技巧,熟练掌握后对于开发还是很有帮助的。 1. 对字符串使用单引号 PHP 引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的...

weixingo
2015/09/18
78
0

没有更多内容

加载失败,请刷新页面

加载更多

矿难让显卡压了那么多货咋办?NV如是说

在苏州 GTC 开幕的几天前,英伟达刚刚遭遇了一次股价的腰斩。 近来加密货币的热度渐低,受到挖矿热潮照顾许多的英伟达「矿机」销量受到打击,甚至出现了严重的库存危机,加上近来刚刚发的 RT...

linux-tao
3分钟前
0
0
Python学习日记5|BeautifulSoup中find和find_all的用法

Python学习日记5|BeautifulSoup中find和find_all的用法 是蓝先生 关注 2016.04.20 11:26* 字数 930 阅读 37205评论 11喜欢 10 今天是4.20号。 前天晚上看到蒋方舟的一句话: 不要左顾右盼。慢...

linjin200
4分钟前
0
0
浅析Vue.js 中的条件渲染指令

1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件。 html: <div id="app"><p v-if="type===1">拌面</p><p v-else-if="type==...

开元中国2015
4分钟前
0
0
聊天机器人最难理解的 10 个词汇

简评:现在,越来越多的「聊天机器人」凭借着人工智能能与人类对话,甚至编写新闻。人们该如何判断对方是一个血肉之躯,还是一个可笑的算法?又该如何判断一个小说故事是由一台机器编写的,而...

极光推送
10分钟前
0
0
开源 java CMS - FreeCMS2.8会员我的评论

项目地址:http://www.freeteam.cn/ 我的评论 从左侧管理菜单点击我的评论进入。在这里可以查看当前登录会员的所有评论记录。 删除评论 选择评论然后点击删除按钮可以完成删除操作。 为了防止...

freeteam
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部