言十年的博客

上善若水,水善利萬物而不爭

物盡其用!人盡其才!兩全其美!


PHP5.4的trait语法感受

我问了下同事!这个特性很少用!尽管我们线上的环境是5.4。嗯,还有一点array()用惯了,[]似乎用的就少。我还是觉得能用新的就用新的。省力气。

看到trait我立刻想起了iOS的语法——extension。iOS中经常把处理String的一类的方法,封装成类扩展。把Array或者Dictionary或者NSObject等等封装重构成分类。这样代码看起来就比较简洁。

swift的extension 写法

extension String {
  可以定义属性
  定义方法
}

trait 我想,也能如此的使用。比如:专门验证字符的我们封装成一个trait。这样在类里面使用。就方便了很多。等等。

<?php     

trait Regx {
     public function checkAge($a) {
         echo __FUNCTION__;
         echo "检测age<br/>";
         return is_int($a);
     }
}
class Person {
    use Regx;
    public $name;
    public $age;
    public $mobile;
    public function __construct() {
        echo "初始化了<br>";
    }
    public function addAge($age) {
        echo "添加年龄<br>";
        if ($this->checkAge($age)) {
            $this->age = $age;
        } else {
            echo("要的是整数");
        }
    }
    public function __get($name) {
        echo "调用了get-{$this->name}";
        return $this->name;
    }
}

$p = new Person();
 
echo $p->addAge("12");
echo $p->age;
echo "<hr>";
echo $p->addAge(12);
echo $p->age;

参考资料:

分享到