php 快速上手
基本语法
PHP 标记
php 以 <?php
和 ?>
(可以选用, 推荐, 防止输出空白) 作为开始和结束标记.
打印
php 有 echo
(多参数) 和 print
(单参数) 可以用于打印输出, 分别可以使用表达式(加括号)和语句(不加括号)形式.
语言结构
php 中有一些特殊调用其实是 php 的语言结构, 比如用于输出的 echo
和 print
, 语言结构和函数的区别是, 语言结构是 php 语法的一部分(关键字), 不能被用户定义或添加.
变量和常量
php 中变量以一个美元符号跟变量名来表示, 区分大小写.
大部分变量作用域只有一个单独范围. 函数定义引入局部范围.
global
关键字在作用域中声明全局变量, 也可使用预定义变量对象 $GLOBALS
.
static
关键字定义静态变量.
gloabl
和 static
变量是作为引用实现的.
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 种符合类型, array
和 object
.
2 种特殊类型, resource
和 NULL
.
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
, protected
或 private
来声明, 通过 \(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
模块
require
和 include
语言结构包含并运行指定文件, 区别是在处理失败时前者产生错误, 后者只产生警告.
文件查找顺序: 绝对相对路径 或 include_path -> 脚本当前目录 -> 错误或警告.
require
和 include
有返回值, 成功为 1, 可以通过在包含文件中 return
改写返回值.
require_once
和 include_once
在文件已经包含时不会运行.
命名空间
php 快速上手的更多相关文章
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 快速上手Unity原生Json库
现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手
原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- 快速上手seajs——简单易用Seajs
快速上手seajs——简单易用Seajs 原文 http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...
- Git版本控制Windows版快速上手
说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...
- Objective-C快速上手
最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...
- Netron开发快速上手(二):Netron序列化
Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...
- Netron开发快速上手(一):GraphControl,Shape,Connector和Connection
版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...
- NHibernate3快速上手教程FluentNHibernate配置与DBHelper
很多学习NHibernate的新手很容易卡在配置文件这一关,正所谓万事开头难,上手后再配合官方文档就比较容易了. 网上关于配置文件的资料非常多,但由于版本的问题,许多老的教程中都没有明确指出类库的版本 ...
随机推荐
- 《Cracking the Coding Interview》——第12章:测试——题目5·
2014-04-25 00:41 题目:怎么测试一支笔?(Pen?您老说的是钢笔?) 解法:这种简约而不简单的题目,实在是面试官最喜欢,面试者最头疼的类型了.面试官可以只花三秒,以一种灰常高贵冷艳的语 ...
- 《Cracking the Coding Interview》——第12章:测试——题目3
2014-04-24 23:28 题目:玩象棋游戏,你要设计一个bool型的方法来检测一个棋子能否移动到指定位置. 解法:不同的棋子有不同的移动规则,那么应该采取棋子基类实现接口,各个棋子子类来实现的 ...
- 《Cracking the Coding Interview》——第2章:链表——题目4
2014-03-18 02:27 题目:将一个单链表按照一个值X分为两部分,小于X的部分放在大于等于X的部分之前. 解法:按照值和X的大小,分链表为两条链表,然后连起来成一条. 代码: // 2.4 ...
- adb启动和关闭
启动adb服务: cmd("adb start-server"); 关闭adb服务: cmd("adb start-server");
- Python学习-django-Form组件
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 +? 1 2 3 ...
- Java 打印* 三角形
package anli1; public class sanjiaoxing { public static void main(String[] agrs){ System.out.println ...
- 【Linux】- 获取root权限命令
1:Redhat系统或者Fedora或者CentOs的Linux发行版,那么在Linux终端输入命令回车: su - root 这样就可以切换到root权限了 2:Ubuntu系统,在Linux终端输 ...
- MySQL常用客户端 命令
登录MySQL mysql -h localhost -uroot -p 授权指定用户访问指定数据库 GRANT ALL ON cookbook.* TO 'cbuser'@'localhost' I ...
- BZOJ 2730:[HNOI2012]矿场搭建(割点+连通块)
[HNOI2012]矿场搭建 Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖 ...
- flutter channel master
flutter可能是未来跨平台开发的又一技术框架,那么对于一个app,我们不可能完全用flutter来开发,那么就意味着我们需要在已有的Android和iOS代码中去集成flutter.目前这一技术还 ...