• PHP中call_user_func和call_user_func_array函数使用与比较

    以前一直都有看到过和用过这两个回调函数,但是只是知道简单地使用,并没有深入了解两个函数的具体用法和不同之处,今天刚好有机会再次接触到这两个函数,就来做个总结,好记性不如烂笔头。

    ##call_user_func

    ###函数定义

    mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
    

    把第一个参数作为回调函数调用,并且将其余的参数作为回调函数的参数。

    ###参数说明

    Read more...
  • PHP匿名函数

    ##定义(摘抄自PHP手册) 匿名函数(Anonymous functions),也叫闭包函数(closures),允许创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其他应用的情况。

    ###匿名函数示例一

    <?php
        echo preg_replace_callback('~-([a-z])~', function ($match) {
            return strtoupper($match[1]);
        }, 'hello-world');
    

    输出

    helloWorld

    Read more...
  • PHP之道--函数式编程(译)

    原文出处:http://www.phptherightway.com/pages/Functional-Programming.html

    PHP支持一流的函数,意味着函数可以被赋值到一个变量。用户自定义以及内建函数都可以被变量引用以及动态调用。函数可以作为参数传递到其他函数中,函数也可以返回其他函数(这个特性被称为高阶函数)。

    递归,这是一个允许函数调用它本身的特性,它在语言中被支持,但是大多数PHP代码都是用迭代。

    匿名函数(以及闭包支持)自从PHP5.3以后出现(2009)。

    Read more...
  • PHP优化之批量操作MySQL

    设计一个数据表如下:

    create table optimization(
        id INT NOT NULL AUTO_INCREMENT,
        value VARCHAR(10) NOT NULL,
        PRIMARY KEY(id)
    );
    

    现在有一个业务需求需要批量插入数据。

    先来看看下面这一段代码:

    <?php
        $dsn = 'mysql:dbname=test;host=127.0.0.1';
        $user = 'root';
        $password = 'root';
    
        try {
            $dbh = new PDO($dsn, $user, $password);
        } catch(PDOException $e) {
            echo 'Connection failed: ' , $e->getMessage();
        }
    

    Read more...
  • TCP/IP详解读书笔记--ARP:地址解析协议

    ARP为IP地址到对应的硬件地址之间提供动态映射。

    动态是指这个过程是自动完成的。

    ##ARP解析过程 任何时候我们敲入这个形式的命令:ftp bsdi

    都会进行以下这些步骤。这些步骤的序号如图4-2所示。

    • 应用程序FTP客户端调用函数gethostbyname把主机名(bsdi)转换成32bit的IP地址。这个函数在DNS(域名系统)中称作解析器。这个转换过程或者使用DNS,或者在较小网络中使用一个静态的主机文件(/etc/hosts);
    • FTP客户端请求TCP用上一步得到的IP地址建立连接;

    Read more...
  • TCP/IP详解读书笔记--IP:网际协议

    IP协议是TCP/IP协议族中最核心的协议。它提供不可靠、无连接的数据传送服务。

    不可靠(unreliable)的意思是它不能保证IP数据包能成功到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃数据包,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。

    无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可以选择不同的路线,因此B可能在A到达之前先到达。

    Read more...
  • TCP/IP详解读书笔记--链路层

    ##引言 如图1-4所示,在TCP/UP协议族中,链路层主要有三个目的:

    • 为IP模块发送和接收IP数据报;
    • 为ARP模块发送ARP请求和接收ARP应答;
    • 为RARP发送RARP请求和接收RARP应答。

    img-1-4

    Read more...
  • 一步步学习Dwoo模板引擎--函数/修饰符

    ###assign 赋值一个变量

    assign(mixed $value, string $var)
    
    • value : 你想要保存的值
    • var : 变量名称 (除了$开头的字符)

    例子 :

    {assign 'test string' myVar}
    Variable contains: {$myVar}
    

    Read more...
  • 说说PHP中foreach引用的一个坑

    先来看看下面这段代码:

    <?php 
        $arr = array('apple','banana','cat','dog');
        foreach($arr as $key=>$val)
        {
            //some code
        }
    
        echo $val;  //输出dog
        echo $key;  //输出3
    
        //下面对val进行赋值
        $val = 'e';
        print_r($arr);  //输出Array ( [0] => apple [1] => banana [2] => cat [3] => dog )
    

    Read more...
  • 一步步学习Dwoo模板引擎--块和标签

    ##Blocks(块)

    ###a 输出HTML的标签

    a($href, [array $rest = array()])
    
    • href:指定的目标URI
    • rest:任何你想添加到标签的属性都可以作为命名参数被添加到标签中

    Read more...