PHP 历遍 Json 子节点的方法

对 Json 是又爱又恨,不太会用 PHP 解析,研究了半天,终于找到点门道。 <?php $a='[{“id”:1},{“id”:2},{“id”:3},{“id”:4},{“id”:5},{“id”:6},{“id”:8,”children”:[{“id”:9},{“id”:7}]}]’; $json=json_decode($a); foreach($json as $item){ if (isset($item->children)){ echo $item->id; foreach($item->children as $sub_item){ echo $sub_item->id; } }else{ echo $item->id; } } 这种做法必须知道子节点的名称,不然就只能逐个 node 去历遍了。

Highchart

这个周末一直在寻找好用的 PHP Chart,不过基本是好用的贵,免费的连 document 都不全,可能是付费才能有 API Document 提供吧。

我想了下,对于 PHP Chart,基本要求是:

  1. 可以解析 Json;
  2. 可以 interactive,不只是一张图片,点击上面的点,可以显示数值;
  3. 可以双纵轴;
  4. customization 尽量多,API 文档清晰,例子多。
  5. 有动画效果,装逼用。
  6. 在手机和平板上依旧正常显示,这非常重要。

终于功夫不负有心人,搜到了一个不是基于 PHP 的叫 HighChart 的 JavaScript 库,打开官网 Demo,发现眼前一亮,至少图表很好看,也有动画,免费版几乎没有限制,只是在右下角会有一个 HighChart 的 link,我觉得完全不碍事,API 文档很全,基本符合我的要求。

Read more

Laravel5: 学习笔记

Migration 应该是整个 laravel 框架的核心功能了。

#创建 table
php artisan make:migration create_table_requests --create="requests"

#然后让它会在目录下生成一个 migration 的文件:\database\migrations\

#运行 php artisan 让这个表生效
php artisan make:migration

#Rollback
php artisan migrate:rollback

#增加删除字段
php artisan make:migration modify_table_requests --table="requests"

#然后就会生成一个新的 migration 文件,如果可以为空,可以加一个->nullable(),默认是不可为空。
$table->string("submitter")->nullable()->default("Michelle");

#Rollback 里面
$table->dropColumn("submitter");

nullable

Read more

Laravel 学习笔记:Route

其实刚开始逛 v2ex 的时候,就听说过 PHP 框架,然后通过搜索得知最大最好用的框架是 Laravel,但我兴趣满满地打开官网,却发现自己完全看不懂,连 Quick Start 都看不懂。 还是需要有师傅带入门。 今天回顾了 Laravel Basics 的第三集,A Gentle Introduction to Routing, Controllers, and Views。 Route 实现的其实是伪静态,不用创建某个目录,但是却可以直接访问那个目录。 这种做法我是真的从来没有想过,不过很好用是真的。 route 的控制文件位于 app/Http/routes.php,对应 Controller 的目录在 app/Http/Controllers,再对应到 View 目录是 resources/views/,如果没有老师带着,一开始真的会晕。 views 都会以 xxx.balde.php 去命名,我初步理解 blade 是 laravel 的一种 php 解析引擎,比方可以实现 {{$index}} 这样比较方便的变量输出,还有一些简化 PHP 函数的编写。 之前我自己闭门造轮子的时候,这方面的纠结很多,因为每一次的 html 和 php 的切换都很麻烦,非常频繁地使用<?php xxx ?>。我曾经搜索过各种关键词,什么 PHP … Read more

Laraval 视频教学网站

原来我之前在 Youtube 上看到的,就是官方的教学视频,怪不得讲得这么清晰,而且并不止 12 集。 地址:laravel-5-fundamentals,how-to-be-awesome-in-phpstorm 可惜不是所有的视频都是免费的,付费又挺贵,一个月要 9 刀。 感觉要把 Laravel 入门非常不容易,今天还看了一些 PHPStorm 的操作技巧,live tempalte 真的很 awesome,要学的东西很多呀,用了那么多年的 PHP,只算是入了个门而已。 而且 Laravel 接触得越多,越觉得它实现的东西,跟我想实现的东西,有太多的相似之处,有一种站在伟人肩膀上的感觉。当然比起自己闭门造轮子,缺点就是上手很难,很多东西要跟着教程细细体会。 以前觉得用 Notepad++写 PHP 才是牛,现在发现 Notepad++的工作效率比起 PHPStorm 真的相去太远,这货贵得有道理,也不是 90 年代的 Dreamweaver 或者 Frontpage 所能比的。

Windows10 下配置安装 Laravel5(暂不成功)

前些天写了一篇:Windows10 下配置安装 Laravel5——建立服务器环境,现在继续折腾,安装 Laravel5。

根据官方教程,第一步是安装 Laravel Installer:

composer global require "laravel/installer=~1.1"

openssl

OpenSSL 一直提示证书验证错误,Google 了一些文章,总算找到解决之道,很简单,SSL 验证失败,是缺失 CA 证书。可以从这里下载。为了避免链接失效,我自己备份打包了一个备份:CA 证书

Read more

修正 HTTP 500 错误

最近 WordPress 的备份插件有点问题,只要一备份就提示 no direct access allowed,连整个 WordPress 后台都进不去,Google 了一下,基本没有找到答案,初步结论是 PHP7 兼容性问题。 今天尝试升级 dokuwiki,结果发现也存在同样的问题,这次是直接显示空白页面,然后居然 WordPress 也被影响了。 Nginx 提示 HTTP 500 错误,重启 NGINX 无果,然后突然想到我可以试试重启 PHP7 的 FPM 进程,结果还真的就 OK 了,很诡异,不知道是哪里的问题。 这么做之后,Dokuwiki 的升级问题也解决了,看了下升级日志,人家应该是兼容 PHP7 的。 PHP 7 compatibility fixes 好吧,先这么用着。

Ubuntu LNMP1.2 安装 PHP7 Beta1

今天下午稍微研究了一下 PHP7 的安装方法,主要参考了以下这些教程:

  1. Zend 官方提供的编译依赖包
  2. WINDOWS 和 Linux 上安装 php7 alpha 并安装 yaf
  3. Running PHP7-FPM Nightly Build on Ubuntu 14.04
  4. LNMP1.2 安装包中的 PHP 升级脚本:/include/php.sh

安装环境:Ubuntu 14.04.2 LTS+LNMP1.2。

Read more