编译型语言&解释型语言
- 编译型语言:编译型语言写的程序在被执行前,需要有一个专门的编译过程,把程序编译成机器语言的文件,比如exe文件。如果以后要运行,直接使用编译的结果便可,而不用再重新编译,因此一般来说执行效率比解释型语言要高。
- 解释型语言:不用编译,需要专门的解释器来解释执行,每条语句都是执行时才翻译,因此程序每执行一次就需要翻译一次,效率较低。
弱类型语言
- 弱类型语言是指在使用变量时,不需要做任何类型的声明,该语言即可根据变量的值自动判断变量类型。
- 这也是PHP及其方便的一点,不过在某些特殊情况下,还是需要严格遵守变量类型的定义规范(比如商品价格)。
简介
- PHP(Hypertext Preprocessor,超文本预处理器,追溯到最初应该叫Personal Home Page,个人主页 )是一种脚本语言,从本质上来说,也就是解释型语言,不需要编译,但需要有相应的脚本引擎来解释执行。
- PHP是一种运行于后端服务器的脚本语言,开源且免费。可镶嵌于HTML页面中解析共存,动态创建输出内容,是构建网页最为省时简单的解析性脚本语言。自版本7发布之后,PHP的应用变得更加广泛。
各个版本
- PHP4引入面向对象等等等
- PHP5极大提高面向对象能力等等等。PHP 5.6 将会在 2018 停止安全更新。
- PHP 7.1 非常新,相较于 5.x 版本增加了强大的 新特性。PHP 引擎大部分被重写,PHP 的运行速度已经远远超越过去。
PHP运行原理
当用户代码输入给PHP内核去执行的时候, PHP内核会对PHP代码进行词法分析和语法分析, 词法分析是把PHP代码分割成一个个的“单元”(TOKEN), 语法分析则将这些“单元”转化为Zend Engine可执行的操作。 然后PHP内部的Zend Engine对这些操作进行顺次的执行。 Zend Engine是PHP内核的核心部分,负责最终操作的执行和结果的返回, 可以理解成为PHP内核中的“发动机”。
关于PHP与JAVA的看法
JAVA有多种成熟的架构供选择,例如SSH框架。虽然PHP也有众多框架,但由于PHP的语言特性更偏向面向过程,同时框架又和面向对象编程思想有很强的联系,因此PHP在框架这条路上与JAVA相去甚远。简单的系统设计PHP完全可以胜任,而复杂的系统设计,意味着后端代码必须模块化,要高内聚/低耦合以及代码重用,JAVA更适合这样的场景。
这里扯一下PHP与面向对象不那么友好,比如不支持方法重载、操作符重载、多重继承(有人说通过递归实现,会扛不住,这里Mark一下,记住这个点)。不过PHP引入了trait,与多重继承相似的一种代码复用机制。
trait
Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。
从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。
<?php
trait HelloWorld {
public function sayHello() {
echo 'Hello World!';
}
}
class TheWorldIsNotEnough {
use HelloWorld;
public function sayHello() {
echo 'Hello Universe!';
}
}
$o = new TheWorldIsNotEnough();
$o->sayHello();
?>
output:
Hello Universe!
近期想回顾一下基础,发现自己对很多东西没有了解透彻,查看他人的博客,然后瞎写了上面一点东西,如有错漏,欢迎指出。
参考:http://www.jianshu.com/p/45a99aedc7ab
http://www.epnz.com/?p=art&id=914
http://www.jianshu.com/p/90257a757884