本文共 2976 字,大约阅读时间需要 9 分钟。
1.script
弱类型
因为是弱类型,在函数的参数类型比较灵活,写一个函数可以顶得上C++/java好几个函数(在C++/java里面有个名词overload).
当然在PHP的类里面,也可以使用类型提示来限定参数的类型。
在函数方法的参数方面,也使用了by reference,by value的概念,避免使用指针这种容易出问题的东西。
(by reference,by value看起来好面熟,在vb里面用过。)
可变变量,可变函数
函数式动态语言(基本上现在的script语言都是这样,js,python,等等)
引入了协程yield, generator(类似于python,golang)
2.面向对象特性-糅合C++/java/python
大多数面向对象的特性都和C++/java/python类似,下面说说其中的几个方面a-j
a.成员访问运算符(C++)
使用C++的箭头运算符
->
而不是java的点运算符。
b.class,extends这些都是C++/java
c.不支持C++那样的多重继承,而是采用java那样的interface(类似于java)
implements interface
d.使用默认构造函数和析构函数,使用默认的属性访问器函数(类似于python)
__construct()
__construct($param)
__destruct()
__set($name,$value)
__get($name)
这些和python类似
类的实例化仍然是new, 这个没有必要创新。
e.per-class const, per-class method使用C++中常见的::操作符
Java 社区对静态类型检查的迷恋程度令人惊讶,Java 程序员们正在不遗余力地寻找延迟绑定的方式。有些方法是成功的。诸如 Spring 等框架的存在主要是为了延迟绑定,它有助于减缓客户机和服务之间的耦合。面向方面的编程通过提供能够扩展类的功能(甚至可以超出其当前的功能)的服务来实现延迟绑定。像 Hibernate 这样的框架也可以延迟绑定,通过反射、代理和其他工具在运行时将持久性功能添加到纯粹、普通的 Java 对象(POJO)中。现在有很多关于如何用 POJO 编程的流行书籍可供开发人员参考,这些书籍大多会使用愈加复杂的技术(比反射还要先进),而这些技术主要是为了打开类并延迟绑定,从而有效地回避了静态类型。
上面2006年发表的文章很老了,但是他的说法依然很有价值。
java8已经加入了很多好玩的特性,比如lamda表达式。
groovy/scala是jvm上面的动态语言,这5年来的发展也很快,可能也是另外一个好选择。class MyClass{ private $_val; public function foo(){ return $this->_val; } public function foo1(){ return $this->_val; } ......}$my = new MyClass;echo $my->foo();说明:MyClass是个类名,不用加$符号,$_val是个私有变量,一般是以$加下划线加字符串组成的,foo和foo1是两个成员函数,不用加$符号,$my是一个对象,必须加$符号,
test(); //调用对象中的方法 test()?>
array("子", "丑", "寅", "卯"), "生肖" => array("鼠", "牛", "虎", "兔"), "数字" => array(1, 2, 3, 4));?>
转载地址:http://yojtb.baihongyu.com/