PHP发短信 PEAR 包:Services_Sms
对于这种第三方库,PHP官方称之为PEAR,需要按照PEAR标准开发(标准URI)。
PEAR的优势:一键安装到php/lib/php目录,require即可使用,很方便。
由于项目要发短信,所以我开发了一个,现在整理开源出来。安装步骤如下:
pear install sinkcup/Services_Sms
0.0.1版支持下列短信服务商:
移通网络:http://www.etonenet.com/
短信宝:http://smsbao.com/
互亿无限:http://ihuyi.com/
使用步骤:
1、到短信服务商网站注册一个帐号,比如移通网络(http://www.etonenet.com/)。
2、demo(参考https://github.com/sinkcup/Services_Sms/blob/master/tests/Services/SmsTest.php):
require_once 'Services/Sms.php';
$conf = array(
'spid' => 'foo',
'sppassword' => 'bar',
'apiUriPrefix' => 'http://esms.etonenet.com/',
);
$c = new Services_Sms('etonenet', $conf);
$r = $c->send('13800138000', 'Hello!树先生 etonenet');
var_dump($r);
exit;
?>
源代码:https://github.com/sinkcup/Services_Sms
sinkcup PEAR 频道:http://sinkcup.github.io/pear/
本文链接:http://www.cnblogs.com/sink_cup/p/PHP-PEAR-Services_Sms.html,转载请注明。
如题,生物界中任何东西都需要成长,而成长却也分为两种,一种是邪恶的成长,一种是健康的成长。
程序员也是一样的,当我们在成长的时候,必须提前知道规范,从而形成健康的成长,否则养成了大的恶习之后,再后悔却是如此的痛苦了。
所以,今天就整理了一下PHP的规范,让大家参考参考。就像大家常说的一句话,“规矩是死的,人是活的。”。是的,但是,在规矩中成长的人都会拥有一堆非常让人羡慕的好习惯。
PHP规范
1. 为什么要编码规范
- 编码规范(code conventions)对于程序员而言尤为重要,有以下几个原因:
2. 概要
- 用四个空格代替tab缩进。
- 去掉PHP文件底部的“?>”。
- 每行程序一般少于80字符,超出部分,分成多行书写。
- 每行只写一条语句,不允许把多个短语句写在一行中。
- 应为文件和函数添加注释。
- 应及时删除废除的注释代码。
- 变量、函数的命名应规范。
3. 编辑器设定
3.1. 缩进
所有的缩进使用空格取代Tab制表符。PHP文件采用4个空格的缩进,HTML文件以及HTML文件中嵌入的Javascript代码采用2个空格的缩进;单独的 Javascript以及CSS文件采用4个空格的缩进。
3.2. 字符编码
所有PHP、HTML文件均保存为No Bom UTF-8的字符编码。
4. 代码布局
4.1. 文件底部
去掉文件底部 “?>”。
4.2. 相对独立的程序块之间、变量说明之后必须加空行
示例:如下例子不符合规范
if (!$valid_ni()){... // program code
}
$repssn_ind = $ssn_data[’index’]->repssn_index;
$repssn_ni = $ssn_data[’index’]->ni;
应如下书写:
if (!valid_ni(){... // program code
}
$repssn_ind = $ssn_data[’index]->repssn_index;
$repssn_ni = $ssn_data[index]->ni;
4.3. 较长的语句要分成多行书写
一行程序需小于80字符
较长的语句要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首示例:
$perm_count_msg->len = NO7_TO_STAT_PERM_COUNT_LEN+ STAT_SIZE_PER_FRAM * strlen( $len );
$act_task_table[$frame_id * STAT_TASK_CHECK_NUMBER + $index]->occupied
= $stat_poi[index]->occupied;
$act_task_table[taskno]->duration_true_or_false
= sys_get_sccp_statistic_state( $stat_item );
if (($taskno < $max_act_task_number)
&& (n7stat_stat_item_valid ($stat_item))){
... // program code
}
for ($i = 0, $j = 0; ($i < $bufferKeyword[’word_index’]->word_length)
&& ($j < new_keyword->word_length); $i++, $j++){
... // program code
}
4.4. 一行只写一条语句
不允许把多个短语句写在一行中,即一行只写一条语句。示例:如下例子不符合规范
$rect->length = 0; $rect->width = 0;应如下书写:
$rect->length = 0;$rect->width = 0;4.5. 始终包含大括号
这是因为懒于多敲两个字符而给代码清晰带来问题的又一个情形。
示例:如下例子不符合规范
if ($condition) do_stuff();if ($condition)
do_stuff();
while ($condition)
do_stuff();
for ($i = 0; $i < $size; $i++)
do_stuff($i);
应如下书写
if (condition){do_stuff();
}
while ($condition){
do_stuff();
}
for ($i = 0; $i < $size; $i++){
do_stuff();
}
4.6. switch写法
示例:如下例子符合规范
switch (){case ‘1’:
..program
break;
case ‘2’:
..program
break;
}
4.7. 大括号放在哪儿
程序块的分界符(大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。
而在函数体的开始、类的定义、以及if、for、do、while、switch、case语句中的右大括号应放在行尾, 左大括号应与右大括号所在行的行首处在同一列
示例:如下例子不符合规范
for (...){
... // program code
}
if (...)
{
... // program code
}
function example_fun()
{
... // program code
}
应如下书写:for (...){
... // program code
}
if (...){
... // program code
}
function example_fun(){
... // program code
}
4.8. 符号之间使用空格
采用这种松散方式编写代码的目的是使代码更加清晰。
由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。
示例:如下例子不符合规范
$i=0;if($i<7) ...
if ( ($i < 7)&&($j > 8) ) ...
for($i=0; $i<$size; $i++) ...
$i=($j < $size)?0:1;
do_stuff( $i, "foo", $b );
应如下书写:
$i = 0;if ($i < 7) ...
if (($i < 7) && ($j > 8)) ...
for ($i = 0; $i < $size; $i++) ...
$i = ($j < $size) ? 0 : 1;
do_stuff($i, "foo", $b);
4.9. 字符串连接符
当使用字符串连接符时必须在句点(.)两侧加上空格。
示例:如下例子不符合规范
$str = ‘<img src=/blog_article/”’.$thumb_url.’” />’;$str = ‘<img src=/blog_article/”’/index.html .$thumb_url. ‘”/>’;
应如下书写:$str = ‘<img src=/blog_article/”’/index.html . $thumb_url . ‘” />’;
4.10. 空行的使用
谁也不愿意看到挤在一堆的无序的代码。我们在写代码的时候总是会利用一些空行来增加代码可读性。合理的利用空格来区分代码段会使代码的逻辑思路更加明确。我们强行规定的空行有以下两种情况:
- <?php 之后必须有且只有1个空行
- ?> 之前必须有且只有1个空行
- 两个函数之间必须有1个空行。
- return、die、exit之前如果有其他语句的情况下应加上一个空行。
在代码中我们不允许在行尾有多余的空格。
5. 注释
5.1. 文件头部模板
/*** ShopEx网上商店 文件中文名称
* 类或者文件的说明,此处可以使用html
*
* @package
* @version $Id$
* @copyright 2003-2008 Shanghai ShopEx Network Tech. Co., Ltd.
* @license Commercial
* =================================================================
* 版权所有 (C) 2003-2009 上海商派网络科技有限公司,并保留所有权利。
* 网站地址:http://www.shopex.cn/
* -----------------------------------------------------------------
* 您只能在不用于商业目的的前提下对程序代码进行修改和使用;
* 不允许对程序代码以任何形式任何目的的再发布。
* =================================================================
*/
5.2. 函数头部注释
每个函数之前应当有注释,告诉一个程序员使用这个函数所需要知道的事情。一个最小化的注释应包括:每个参数的意义,期望的输入,函数的输出。注释还应当给出在错误条件下(还有具体是什么错误条件)这个函数的行为。(注释应该确保)其他人不必察看这个函数的代码,就可以自信地在自己的代码中调用这个函数。
另外,为任何技巧性的,晦涩的或者并非显而易见的代码添加注释,无疑是我们应该做的事情。对文档尤其重要的是你的代码所做的任何假设,或者它正确
php读取mysql中文数据出现乱码问题的解决方法。
1.PHP页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了
解决方法:
选择'UTF8'或者'gb2312',这样客户浏览器会自动选择并出现正确的中文显示。注意:'UTF8'或者'gb2312'都可以正确显示中文的。
2.数据库MySQL中的编码类型不正确。
解决方法:
创建数据库的时候,MySQL 字符集选择'UTF8',MySQL 连接校对选择utf8_general_ci,这样创建的数据库用来存储中文肯定没有问题,
否则,你的中文首先在MySQL中就是乱码,更不要期望它会给你在PHP页面中显示正确。
3.与平时的脚本编辑环境有关。比如,有些内容是自己用word写的,有些是用记事本写的,有些用editplus、ultraplus等文本编辑器。有时候就直接在DW中写中文了,
解决方法:
尽量用同一种编辑器。如果是拷贝来得既有的内容,建议用ultraplus中的编码转换功能把它转换成utf8或者gb2312。
到底转换成什么类型并不重要,关键要求你的PHP WEB应用程序中的编码要一致就行。
4.编程访问 MySQL时,建议添加一行代码:mysql_query("SET NAMES 'GBK'");
本文链接:http://www.cnblogs.com/cfinder010/p/3261897.html,转载请注明。