大家好,本日要给大家分享的是任何一门措辞都要学习的东东语法(大牛请忽略这篇文章)。那么php的语法是什么样的呢?为了给大家讲解以及自己巩固。我将php5与最新的php7的语法做了些整理。
一 关于变量
php5和7并无差异
变量以非分外字符,数字开头
缺点的命名办法:$^&%name,$123name
精确的命名办法:$name123,$_Name123
二 关于include,require
大家都知道,在php5中include在碰到 程序上的缺点的话,会发出警告,并连续实行。而require会终止程序连续实行。那么在php7中是如何处理的呢?
先看一个include 的例子
=====================
b.php
<?php
if(1==2)
{
continue;
}
?>=====================
a.php
<?php
include("b.php");//b.php先实行
echo "hello"
?>
php5
结果: 输出 "hello"
php7
结果: 输出 PHP Fatal error: Cannot break/continue 1 level in b.php on line....
把稳:
在脚本中那个continue,php5处理时会判断1==2是true还是false,如果是false,则直接绕过,php7中,不管1==2是否成立,它会预先判断continue是否符合语法规则。
结论:对付include,reuqire php5 不会预判不符合语法规则,只有实行到了才会返回缺点,而php7会预判语法规则
三 关于数组
php7中define 一个常量数组
<?php
define("a",[12,23,33]);
var_dump(a);
php5
结果:输出
Use of undefined constant a - assumed 'a' in /var/www/html/array.php on line 3 string(1) "a"
php7
结果:输出
array(3) {
[0]=>
int(12)
[1]=>
int(23)
[2]=>
int(33)
}
结论: define 在php5中不可定义为数组在php7中可定义为数组
php7中的变量运行办法与php5有所差异
<?php
class Test {
function a()
{
print_r("hello");
}
}
$obj = new Test();
$arr = ["a"];
$obj->$arr[0]();
php5
结果 输出:
hello
php7
结果输出:
PHP Fatal error: Uncaught Error: Function name must be a string in /var/www/html/array.php:13
把稳:
php7 要 运行的话须要将 $obj->$arr[0]() 改成这样 $obj->{$arr[0]}()。
如此一来php5 和php7都能运行这段代码。
结论:
php7代码运行的结合办法与php5中不同,要运行的话须要用{}显示的处理变量结合顺序
四 关于类型php本来便是弱类型措辞,在php7之前除了class以外是 没有这个哀求的,那么在php7以前要在函数或方法声明变量类型该如何做呢?我先举个多态的例子
例子
<?php
interface Human {
function getSex();
}
class Woman implements Human{
function __construct()
{
}
function getSex()
{
return "I am woman";
}
}
class Man implements Human {
function __construct()
{
}
function getSex()
{
return "I am man";
}
}
class Call {
function catlog(Human $p)
{
return $p->getSex();
}
}
$obj = new Call();
var_dump($obj->catlog(new Woman()));
var_dump($obj->catlog(new Man()));
php5和php7输出结果一样:
string(10) "I am woman"
string(8) "I am man"
把稳:
Man 和Woman 都实现了Human接口,以是它们都是Human类型,即多态。Human $p 这个$p便是Human类型。
在php7中可以给变量及返回值声明类型
标量类型声明<?php
function test(int $a)
{
return $a;
}
var_dump(test(1));
php5 输出结果:
PHP Catchable fatal error: Argument 1 passed to test() must be an instance of int, integer given, called in /var/www/html/type.php on line 7 and defined in /var/www/html/type.php on line 2
php7输出结果:
int(1)
把稳: test(int $a) 这个$a 之前的int 便是类型声明
结论:
php7支持 标量类型声明,php7以下不支持
返回值类型声明<?php
function test(int $a): array
{
return [$a];
}
var_dump(test(1));
php7输出:array(1) {[0]=>int(1)}
把稳:函数返回的结果类型要与声明的类型同等 否则将报错 。例如将return [$a] 改成 return $a,将报错
PHP Fatal error: Uncaught TypeError: Return value of test() must be of the type array, integer returned in ....
关于太空符号
<?php
var_dump("a"<=>"a","a"<=> "b","b"<=> "a")
php5 结果 输出:
PHP Parse error: syntax error, unexpected '>' in
php7 结果 输出:
int(0)
int(-1)
int(1)
把稳:php7以前不支持太空符操作,
结论:左边比右边小 则输出 -1,比右边大 就输出1 相等就输出0
关于php7 和PHP5的特性本日就先总结到这。下一篇讲php的设计模式,欢迎大家连续关注,感激