php杂记

本文是一篇关于PHP开发的笔记,涵盖了Medoo框架的使用、数据库操作、调试技巧、SOAP服务的调用、Redis集成以及Linux环境下的注意事项。通过实例讲解了PHP中可能遇到的问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:该文章只是作为做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坐标,原图的宽(进行设置缩放),原图的高(进行设置缩放),原图要载入的宽,原图要载入的高);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值