感觉比较实用的两个array函数,为了熟悉一下HashTable的操作就写成了extension的形式

array_insert


–对应index插入值得的值
array array_insert ( array $input , int $index , mixed $value )

示例:

<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 4];
var_dump(array_insert($arr, -1, ['foo', 'bar']));
/* output */
array (size=5)
  'a' => int 1
  'b' => int 2
  'c' => int 3
  0 => 
    array (size=2)
      0 => string 'foo' (length=3)
      1 => string 'bar' (length=3)
  1 => int 4

Read more...

在鸟哥《深入理解PHP原理之对象(一)》看到一段挺有意思的代码

“PHP通过这种比较ugly但是简单高效的方法, 实现了对属性访问权限的标识.知道了, 我们就可以干一些不合常理的事请, 比如访问对象的私有/保护属性”

<?php
class Foo {
    private $_name = "laruence";
    protected $_age = 28;
}
$foo = new Foo();
$arr = (array) $foo;
var_dump($arr["\0Foo\0_name"]);
var_dump($arr["\0*\0_age"]);
//output:
string(8) "laruence"
int(28)

至于这算不算BUG本文就不议论了,有兴趣的可以看看这里 (见: Bug #44273 access to private and protected class variables allowed when casting to array ): 下面有相关议论

Read more...

在这里搭建起博客源于和 @AproSane的一次交谈。 之前他的博客是挂在GAE的,但是由于抠门的配额不得不迁移,找到了这个VPS。 很小巧,并且支持Go,Python什么的,最主要便宜到烂,于是我也买了。 然后想了想做Web开发也一段时间了没有一个域名不像话,接着就买了四年了这域名, 所以就有了这博客。

当然这VPS并不是单单有用搭建博客,还有用来运行一些“实验性”的东西。还是说回 博客吧。最近在看Go Web的内容并且和@AproSane担心 的一样,怕VPS哪天跪了,所以还是做静态博客吧,选用了Gor生成。我的发布流程是这样的,本地编辑编译,然后提交到github,接着VPS那边更新就好。

说到博客数一数都好几个,百度的,OSC的,SAE的(贴在about me),其实没心思写,说忙是一回事,但最主要还是自己懒吧。想导出迁移到这里,但是一直不顺利,估计就这样算了。


2014-05-09 把博客的生成器换成了jekyll,因为一直有听说这东西,所以现在试一下,虽然一点都不懂ruby,但最近在看《代码的未来》

在看《PHP之道》时有这么一段代码

<?php
$raw = '22. 11. 1968';
$start = \DateTime::createFromFormat('d. m. Y', $raw);
echo 'State date: ' . $start->format('m/d/Y') . "\n";

$end = clone $start;
$end->add(new \DateInterval('P1M6D'));

$diff = $end->diff($start);
echo "Difference: " . $diff->format('%m month, %d days (total: %a days)') . "\n";

if($start < $end) {
    echo "Start is before end!\n";
}

$start < $end 引起了我的注意,印象中并没有__compare之类的魔术方法,翻了下手册确实没找到,也没相关实现,那为什么这里可以直接比较呢?因为这是built-in class,所以需要翻一下源码。(已下代码版本是 5.4.27)

Read more...

###起因

又是很久很久以前(大概1年多了)看到鸟哥的《使用PHP Embed SAPI实现Opcodes查看器》,然后在Ubuntu上跟着折腾了起来,最后勉强也是跑起来了。最近找回了这份代码,打算在新笔记本上编译,然后问题就接踵而来。

###Mac上编译PHP embed sapi

Ubuntu上的套路,直接

$ cd php-src/
$ ./configure –enable-embed
$ make && make install

编译出libphp5.so, 但是Mac上不认这一套,后来Google到《在mac上开启php的embed模式》才知道要编译成libphp5.dylib。其实按照文章我打上patch执行make提示没有相关规则,继续Google后《在mac上开启php的embed模式》(别吐槽为什么名字一样,其实不是同一篇)。autoconf以后重新configure

$ cd php-src/
$ ./configure –enable-embed
$ make libphp5.dylib && make install

到这里动态链接库就编译好了。

Read more...