基本语法

PHP 标记

php 以 <?php?>(可以选用, 推荐, 防止输出空白) 作为开始和结束标记.

打印

php 有 echo(多参数) 和 print(单参数) 可以用于打印输出, 分别可以使用表达式(加括号)和语句(不加括号)形式.

语言结构

php 中有一些特殊调用其实是 php 的语言结构, 比如用于输出的 echoprint, 语言结构和函数的区别是, 语言结构是 php 语法的一部分(关键字), 不能被用户定义或添加.

变量和常量

php 中变量以一个美元符号跟变量名来表示, 区分大小写.

大部分变量作用域只有一个单独范围. 函数定义引入局部范围.

global 关键字在作用域中声明全局变量, 也可使用预定义变量对象 $GLOBALS.
static 关键字定义静态变量.
gloablstatic 变量是作为引用实现的.

php 中可以使用 define 函数和 const 关键字来定义常量.

php 中预定义了很多变量(http://php.net/manual/zh/reserved.variables.php)和常量(http://php.net/manual/zh/language.constants.predefined.php).

可变变量

用两个 $ 符号实现可变变量.

预定义变量

数据结构

4 种基本类型, boolean, integer, float(一般为双精度), string.

2 种符合类型, arrayobject.

2 种特殊类型, resourceNULL.

string

string 有4种表示方式, 双/单引号, heredoc 和 newdoc (<<< 表示).
双引号和 heredoc 会替换变量和转义特殊字符.

数组

php 中的数组实际上是一个有序映射(ordered map). 数组可使用 array(1, 2, key => value) 语言结构或 [1, 2, key => value] 语法创建.

数组中的 key 会进行强制转换(http://php.net/manual/zh/language.types.array.php#example-99).

unset 语言结构用于删除键值对.

list 语言结构数组解构.

流程控制语句

php 流程控制语句块除了可以用大括号分割外, 还可以使用冒号来分割, 最后再加上 end语句名即可. 适合用于直接输出 html 使用.

if-elseif-else

循环

while 语句: while 和 do-while.
for 语句: for(exp1; expr2; expr3).
foreach 语句: foreach($arr as \(value) 和 foreach(\)arr as $key => $value)

break 语句: 可以接受一个可选的数字参数来决定跳出几重循环, 默认为 1。
continue 语句: 可以接受一个可选的数字参数来决定跳过几重循环, 默认为 1, switch 语句也可以 continue

declare 指令

现在只有两种指令, ticks 和 encoding.

函数

php 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。

php 函数参数可以按引用传递(c++相似)

可变函数

php 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

匿名函数 (js相似)

类, 面向对象

属性

属性通过 public, protectedprivate 来声明, 通过 \(this->property 来引用. (\)this 表示实例的引用)
类静态属性通过 self::staticProperty 来引用. (self 表示类的引用)

构造, 析构函数

function __construct ($args){ parent::__construct($args); }, (parent 表示父类的引用)
function __destruct(){}

抽象类和接口(java相似)

Trait (ruby module include 相似)

优先级: 当前类 > trait > 父类继承.
冲突: use 多个 trait 时, 如果有方法名相同, 会产生冲突.
组合: trait 可以组合成 trait.

魔术方法 (python 类似)

php 中魔术方法以双下划线开头, 如 __construct__destruct`.

匿名类 (php 7)

迭代器和生成器 (python 类似)

异常, 错误处理, 测试

异常: try-catch-finally

模块

requireinclude 语言结构包含并运行指定文件, 区别是在处理失败时前者产生错误, 后者只产生警告.
文件查找顺序: 绝对相对路径 或 include_path -> 脚本当前目录 -> 错误或警告.
requireinclude 有返回值, 成功为 1, 可以通过在包含文件中 return 改写返回值.

require_onceinclude_once 在文件已经包含时不会运行.

命名空间

php 快速上手的更多相关文章

  1. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  2. 快速上手Unity原生Json库

    现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...

  3. [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手

    原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...

  4. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  5. 快速上手seajs——简单易用Seajs

    快速上手seajs——简单易用Seajs   原文  http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...

  6. Git版本控制Windows版快速上手

    说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...

  7. Objective-C快速上手

    最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...

  8. Netron开发快速上手(二):Netron序列化

    Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...

  9. Netron开发快速上手(一):GraphControl,Shape,Connector和Connection

    版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...

  10. NHibernate3快速上手教程FluentNHibernate配置与DBHelper

    很多学习NHibernate的新手很容易卡在配置文件这一关,正所谓万事开头难,上手后再配合官方文档就比较容易了. 网上关于配置文件的资料非常多,但由于版本的问题,许多老的教程中都没有明确指出类库的版本 ...

随机推荐

  1. 《Cracking the Coding Interview》——第5章:位操作——题目3

    2014-03-19 05:57 题目:给定一个整数N,求出比N大,而且二进制表示中和N有相同个数的‘1’的最小的数,比如3是‘11’,接下来的5是‘101’,再接下来的6是‘110’. 解法:从低位 ...

  2. 自动化测试(三)如何用python写个双色球

    写一个程序,输入N就产生N条双色球号码 红球  6     01-33 蓝球  1     01-16 产生的双色球号码不能重复,写到一个文件里面,每一行是一条 红球: 01 03 05 07 08  ...

  3. 常用模块(string)

    import string# dt = string.digits # 获取0-9的数字# dt = string.ascii_letters # 获取所有的大小写字母# dt = string.he ...

  4. jenkins 连接服务器并运行脚本

    1.登录,在系统管理——节点管理——新增节点——配置从节点,添加远程工作目录,选择启动方式:通过JAVA WEB启动代理,添加JDK 2.在列表点节点,点launch下载插件,放到D:\JENKINS ...

  5. leetcode_day02

    任务二:删除排序数组中的重复项 原文链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 最开始的解决思路: ...

  6. 团队冲刺Alpha(六)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  7. linux下的静态库和共享库

    转载&&增加:      我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期 ...

  8. 【bzoj4940】[Ynoi2016]这是我自己的发明 DFS序+树上倍增+莫队算法

    题目描述 给一个树,n 个点,有点权,初始根是 1. m 个操作,每次操作: 1. 将树根换为 x. 2. 给出两个点 x,y,从 x 的子树中选每一个点,y 的子树中选每一个点,如果两个点点权相等, ...

  9. 2016年NK冬季训练赛 民间题解

    A题 水题,考察对行的读入和处理,注意使用long long #include <iostream> #include <cstring> #include <cstdi ...

  10. synflood 模拟工具

    synflood 模拟工具 来源 https://blog.csdn.net/wuzhimang/article/details/54581117 因项目需要,要对主流的几家抗DDoS设备做测评,当然 ...