PHP初相识

1、什么是PHP?

PHP全称PHP:Hypertext Preprocessor, 是一种运行在服务器上的开源脚本语言。

那么什么是脚本语言? 脚本语言的对立面不是高级编程语言,它也是编程语言的一种。脚本语言和“非脚本语言”的可以看做“解析型语言“和”编译型语言“的区别:编译型语言会在运行之前针对具体平台将代码编译链接成可执行的机器码;解析型语言直到运行时才逐行编译执行。

2、PHP语言结构:

PHP从下到上可分为4层体系:

① Zend引擎:负责将PHP代码编译成opcode(operating code的缩写:执行码),并且执行它们。注意这里不是机器码,机器码是面向CPU的,这里的opcode是面向Zend引擎的,在功能上可以把Zend引擎类比做java里的虚拟机。

② Extensions: 类库、函数库,定义了各种数据结构和功能。

③ SAPI:Server Application Programming Interface, 很明显这是一个中间层,用来降低底层与上层的耦合度。简单来说就是调用各种Extensions层的服务封装更强大的服务供上层应用调用。

④ 上层应用: 就是用户自己写的PHP项目。

3、PHP的优缺点?

优点:

① 简单:语法简单, 并且PHP中一般不会进行复杂逻辑和复杂运算。

② 开发效率高:很多开发中常用的功能都已经封装好,有人戏说写功能就是在网上找“XXX功能用的函数叫什么来着“。

③ 免费、开源,并且因为是解析型语言所以可以跨平台。
            
缺点:

① 运行效率低:因为PHP是解析型语言,所以每次运行都会比编译型语言多出“编译”这个步骤。

② 支持弱语言带来的后果:不确定的变量类型可能带来不可预知的结果; 引擎需要做大量的工作来支持弱类型导致效率降低。

时间: 2024-10-07 08:14:25

PHP初相识的相关文章

爪哇国新游记之十----异常初相识

import java.util.ArrayList; import java.util.List; public class A{ private int[] arr=new int[3]; private List<String> ls; public A(){ ls=new ArrayList<String>(); ls.add("12"); } public int getArrValue(int i){ return arr[i]; } public

与君初相识,犹如故人归

与君初相识, 犹如故人归, 天涯明月新, 朝暮最相思. 这首云南茶花烟上的小诗最好的反映了我们组员之间的默契.四个来自不同本科学校的妹砸,经过了考研的磨炼,相聚于北洋,开始了两年半的研究生学习生活.我们希望在天大软件学院这个环境中共同成长,共同进步,争取都成为技术大神!此博客用来记录我们的成长轨迹与经历~现在先隆重欢迎小组成员闪亮登场~ No.1 孙雪莹 静如处子,动若疯兔的IT女.喜欢音乐,运动(各种音乐,各种运动). 有点迷糊(有点逗逼,晓丽评),少部分强迫症. 喜欢编程,但渣渣的编程之路一

初相识|performance_schema全方位介绍

初相识|performance_schema全方位介绍 |导 语 很久之前,当我还在尝试着系统地学习performance_schema的时候,通过在网上各种搜索资料进行学习,但很遗憾,学习的效果并不是很明显,很多标称类似 "深入浅出performance_schema" 的文章,基本上都是那种动不动就贴源码的风格,然后深入了之后却出不来了.对系统学习performance_schema的作用甚微. 现在,很高兴的告诉大家,我们基于 MySQL 官方文档加上我们的验证,整理了一份可以系

NodeJs初相识

一.nodeJs简介 1.Node 是一个服务器端 JavaScript 解释器. 2.Node 的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码.处理高并发和异步I/O是Node受到开发人员的关注的原因之一. 3.Node 本身运行Google V8 JavaScript引擎,所以速度和性能非常好,而且Node对其封装的同时还改进了其处理二进制数据的能力.因此,Node不仅仅简单的使用了V8,还对其进行了优化,使其在各种环境下更加给力. 4.第三方的

NetworkX初相识

听说NetworkX是一个很牛的复杂网络研究的工具,就来试一下吧. import networkx as nx G= nx.Graph()#建立一个空白的图 G.add_node("node1")#增加一个叫node1的节点 G.add_node(1) G.add_node(2)#增加两个叫做1,2的节点 G.add_edge(1,2)#增加一个连接节点1,2的边 print(G.nodes())#打印图G的节点 print(G.edges())#打印图G的边 nx.draw(G)#绘

webstorm初相识

虽说这些答案都是百度来的,但我还是要把他整理在一起,等将来有了自己的理解,再来补充. 一.webstorm和dreamweaver的区别?哪个更好? webstorm强大的地方有: 1. 对js的开发有长足的支持,那些自动提示,代码主题,调试之类的我就不说了,主要是对流行技术的支持,比如Node.js,less,sass,jq,ext,prototype等框架的支持 .2. 自身对插件的支持,主要体现在webstorm 2.0以后就已经包涵了zencoding了,而如果dw不是完整版的话,zen

Java 初相识

Java是如何出现的呢?这就要回到1991年,那时候随着单片机的发展,出现了很多微型的系统,Sun公司在这个时候就成立的一个项目组,成员就有我们熟知的"Java之父" 詹姆斯·高斯林,起初的目标是为了占领计算机在家电产品上的嵌入式应用这个市场.首选的开发语言是C++,但是在具体的开发中,发现有写需求是C++不能满足的,比方说,跨平台(一个家电中可能包含多个厂商的芯片),还有就是C++系统过于庞大,而硬件资源有限.为了满足自己的需求,就在C++的基础上开发了Oak(Java的前身)语言.

Map - 与君初相识

前言 生活中,我们常会看到这样一种集合:IP地址与主机名,身份证号与个人等,这种一 一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对应关系的对象,即 java.util.Map 接口. Map 接口下的集合与 Collection 接口下的集合,它们存储数据的形式不同,Collection 接口定义了单列集合规范,每次存储一个元素:而Map接口定了的是双列集合的规范,每次存储一对元素. Collection 中的集合,元素是孤立存在的(单身狗),向集合中存储元素采用一个个元素的

Node.js 网页瘸腿爬虫初体验

延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // 内置文件处理模块 var fs=require('fs'); // 创建一个将流数据写入文件的WriteStream对象 var outstream=fs.createWriteStream('./1.txt'); /