PHP出现 cURL error 60 的解决办法

最近在做项目的时候遇到“cURL error 60: SSL certificate: unable to get local issuer certificate.”看提示应该是SSL 证书出了问题。

从网上下载一个cacert.pem证书文件,然后放在 :path\to\php\extras\ssl\cacert.pem 的文件目录下。

然后打开php.ini 搜索 curl.cainfo = 打开这个配置然后修改为 curl.cainfo =“path\to\php\extras\ssl\cacert.pem”保存即可

注意一定要开启openssl

PHP xml和数组的相互转换方法

    //数组转XML
    function arrayToXml($arr)
    {
        $xml = "<xml>";
        foreach ($arr as $key=>$val)
        {
            if (is_numeric($val)){
                $xml.="<".$key.">".$val."</".$key.">";
            }else{
                 $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
            }
        }
        $xml.="</xml>";
        return $xml;
    }

    //将XML转为array
    function xmlToArray($xml)
    {    
        //禁止引用外部xml实体
        libxml_disable_entity_loader(true);
        $values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);        
        return $values;
    }

 

PHP小知识点使用技巧

1、清空数组中的空白项;

$data = ['1','2','3','8','','0','9'];
print_r(array_filter($data,function($v){return !empty($var);}));

输出结果会为

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 8
    [6] => 9
)

2、include 和 require的区别及使用

include 是用到时在加载文件,并且文件出错后程序会继续运行,只是输出错误。所以加载视图文件时建议使用include

require 是一开始就加载文件,文件出错后程序就会停止运行。

include_once()和require_once()表示已加载过的不在重复加载。

3、数字格式化,每三位用逗号分割

number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] ):
echo number_format('169856420');

输出结果为:169,856,420

【转】PHP编码规范

文件标记

所有PHP文件,代码标记均使用完整的PHP标签,不建议使用短标签。

<?php
  echo 'Hello world';
?>

<?
  //短标签不推荐
  echo 'Hello world';
?>

 文件格式

文件编码 为无 BOM 的 UTF-8。

纯PHP类文件,文件最后 ?> 要省略。

TextMate

在 “文件编码” 中,选择 “UTF-8(推荐)”在 “换行符” 中,选择 “LF(推荐)” 继续阅读【转】PHP编码规范

PHPDoc PHP注释的标准文档

文档注释,无非“//”和“/**/”两种 ,自己写代码,就那么点,适当写几句就好了;但是一个人总有融入团队的一天,团队的交流不是那几句注释和一张嘴能解决的,还需要通用的注释标准。

PHPDoc是PHP文档注释的一个标准,可以帮助我们在注释文档时有规范,查看别人的代码时更方便。下面的表格是我翻译的WIKI上的PHPDoc,个人英文水平有限,可以参照原文。 继续阅读PHPDoc PHP注释的标准文档

PHP之十六个魔术方法详解

PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括:

  1. __construct(),类的构造函数
  2. __destruct(),类的析构函数
  3. __call(),在对象中调用一个不可访问方法时调用
  4. __callStatic(),用静态方式中调用一个不可访问方法时调用
  5. __get(),获得一个类的成员变量时调用
  6. __set(),设置一个类的成员变量时调用
  7. __isset(),当对不可访问属性调用isset()或empty()时调用
  8. __unset(),当对不可访问属性调用unset()时被调用。
  9. __sleep(),执行serialize()时,先会调用这个函数
  10. __wakeup(),执行unserialize()时,先会调用这个函数
  11. __toString(),类被当成字符串时的回应方法
  12. __invoke(),调用函数的方式调用一个对象时的回应方法
  13. __set_state(),调用var_export()导出类时,此静态方法会被调用。
  14. __clone(),当对象复制完成时调用
  15. __autoload(),尝试加载未定义的类
  16. __debugInfo(),打印所需调试信息

继续阅读PHP之十六个魔术方法详解

转帖:在 2016 年做 PHP 开发是一种什么样的体验?(一)

嘿,我最近接到一个网站开发的项目,不过老实说,我这两年没怎么接触编程,听说 Web 技术已经发生了一些变化。听说你是这里对新技术最了解的开发工程师?

你算是找对人了。我对今年的技术别提多熟了, VR 、机器学习、守望先锋……你尽管问吧。我刚去了几个热门的技术大会逛了一圈,没有什么新技术是我不知道的。

厉害。是这样的,我要开发一个网站,用来展示用户的最新动态。我想我应该通过后端接口获取数据,然后用一个 table 来展示数据,用户可以对数据进行排序。如果服务器上的数据变化了,我还需要更新这个 table 。我的思路是用 jQuery 来做。

可别用 jQuery !现在哪还有人用 jQuery 。现在是 2016 年了,你绝对应该用 React 。

继续阅读转帖:在 2016 年做 PHP 开发是一种什么样的体验?(一)

ubuntu14 升级curl

现在做的项目使用了第三方登录的功能,但是每次都授权失败。找到原因是因为curl没有开启SSL,不支持https的地址所以无法正确的获取token。

需要重新安装curl,首先现在curl官网下载最新版本的curl源码我这里下载的是7.51版本.

下载完完成后解压缩

进入解压后的源码目录进行编译

./configure --with-ssl

网上大部分好像都是呀指定一个目录的,但是ubuntu不需要指定

紧接着 make && make install

重启一下就可以了

 

重读PHP文档之命名空间

概述

php5.3之后引入命名空间概念,广义上来说命名空间是一种封装事物的方法。其意义和系统的文件目录有些类似,但又和实际的文件目录结构没有直接的联系。命名空间主要解决了类重名的问题。现代PHP中经常会用到第三方类库,可能会碰到两个类重名的情况,如果想要同时使用两个重名类的话,命名空间就可以很好的解决这个问题。 继续阅读重读PHP文档之命名空间