前言:该文章只是作为做php中遇到的一些东西记录,胡乱记录的
meddo 框架:
引入框架文件,写配置文件,使用时引入驱动$model = connect_db(); 方法可以查看http://medoo.lvtao.net/1.2/doc.php中文文档
方法的参数:当遇到数据库的一些关键字,如:order by 、group by等,省略掉by 直接 ‘GROUP’=>['ID'],当然不是万能,例如sum,count等一下函数,是写不出来(可能是我没写出来,不是没有。我这里仅仅是我个人的经验),可以采取 $model->query("sql")写sql语句,而不用原生的(怕sql注入);
调试,日志输出:
var_dump():能打印出详细的类型,值
print_r():只打印出值
echo():正常输出
调用webservice:
第一步:php环境我是用phpStudy
第二步:开启soap如果是phpStudy可以在'其它选项菜单'中的php扩展及设置当中的php扩展当中选择开启
(第三步):当第二步开启之后,程序报错说找不到Soap类,这时就直接到phpStudy安装目录中找到php然后选择
php.ini文件,打开soap的两个配置(去掉前面的分号就可以了)
第三步:在程序中引用webservice
/*webservice路径*/
$wsdl = "http://www/WebService_zzzzzzzz/webservice/Service?wsdl";
/*调用实现*/
$client=new SoapClient($wsdl,array('encoding'=>'UTF-8'));
/*设置编码*/
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'utf-8';
第四步:当引用好webservice之后,就可以调用$client->方法名(参数)进行调用
ps:若不知道有哪些方法,可以用var_dump($client->__getFunctions());查看有哪些开放函数/方法
当看完之后,例如:其中有一个方法是queryAll(UserInfo arg0);
那么调用时就是 $client->queryAll(array('arg0'=>参数));这个参数可以是数组,可以是一个变量也可以是类
php 调用redis,一般有好几种,自带的扩展,第三方,类库。这里是第三方,对于redis、php操作很简单,获取redis对象(就如java中的实例化一个,只是这是第三方的),然后利用客户端,client为中间键进行操作,是打开库,操作结束
$redis=Helper::createPlugin('Tredis');获取redis对象
$redis->client->select(1);选择库
操作、对于redis而言,是存的字符串,如果是字符串直接set、get就可以,如果是数组,就转一下json
Call to a member function index()
on boolean in /aaa/bbb/ccc/ddd/application/indexservice/controller/xxxxxxxxx.class.php
这个问题是在问题地方,断点,调用的地方断点发现没进入调用,那么对象就没有,对象就找实例化,实例化发现大小写的问题,这低级的错误在window上不存在,Linux就有了。做个笔记
当调用方法时,传递的参数,在window上可以少传或者不传,而Linux就必须传,有几个就要传几个
当ajax请求时,在window下,返回的是一个json对象,可以直接对象.属性,而在Linux上返回的就是一个json字符串,需要转json对象才能使用。 做个笔记
在php 中采用jpql语句查询时,需要分清数据类型
在后台进行调试时,若print_r(">>>>".$id.">>>".$name."<<<<".$img)这种情况,在web输出时会把img给去掉,浏览器把<当做是标签的转义了,页面显示不出来,但点击查看网页源码确有。记录一下,个人习惯导致。java中不会出现
http://blog.youkuaiyun.com/alonesword/article/details/17753153 学习写webservice地址
问题:
1、在同服务器下不同文件中写了一个方法。然后另一个控制器调用,发现失败
解决办法:利用html输出发现在返回的是数据之前有红点。 利用var_dump输出发现多了长度多了几位。在返回数据之前加上ob_clean();即可
ob_clean是清空缓冲区的作用,在写入图片时会用到,这里怀疑是返回数据缓冲区有数据;
2、合成图片,最后如果是生成png会发现有颜色失色的情况,这种情况不生成png而是JPG
3、当把一张图片变圆之后,合并到另一张的头像地方时,会发现有白色的边框(最后成图是jpg)
因为在png下是透明,但生成jpg时会填充白色。所以需要对变圆的图片进行颜色处理
//变圆并透明
$w = imagesx($headimg);
$h = imagesy($headimg);
$c = imagecolorallocate($headimg, 255, 255, 255);
imagearc($headimg, $w/2, $h/2, $w, $h, 0, 360, $c);//画圆弧
imagefilltoborder($headimg, 0, 0, $c, $c); //圆弧颜色
imagefilltoborder($headimg, $w, 0, $c, $c);
imagefilltoborder($headimg, 0, $h, $c, $c);
imagefilltoborder($headimg, $w, $h, $c, $c);
imagecolortransparent($headimg, $c); //进行透明处理
4、压缩图片,当一张图片大了,我们需要的是小一点的
/* 等比压缩二维码 */
// 源文件地址
$filename = UPLOAD_PATH.SEP.'shake'.SEP.$openid.'.jpg';
//获取宽、高
list($width_orig, $height_orig) = getimagesize($filename);
//压缩图片
$image_p = imagecreatetruecolor(220, 220); //创建新的
$image = imagecreatefromstring(file_get_contents($filename));//得到原图资源
imagecopyresampled($image_p, $image, 0, 0, 0, 0, 220, 220, $width_orig, $height_orig);
imagejpeg($image_p,$imgpa);
创建一个新的画布,然后利用imagecopyresampled载入资源参数(新的画布,原图资源,载入的图片在新图的x坐标,载入的图片在新图的y坐标,要载入的图片的x坐标,要载入的图片的y坐标,原图的宽(进行设置缩放),原图的高(进行设置缩放),原图要载入的宽,原图要载入的高);