您的位置:首页 > 编程语言 > PHP开发

PHP从头开始-3

2015-10-13 09:25 381 查看

变量

基础

变量用一个美元符号跟变量名来表示,区分大小写。

变量默认总是传值赋值。要使用引用赋值,将一个
&
符号加到源变量前

未初始化的变量具有默认值

预定义变量

另文

变量范围(作用域)

大部分变量只有一个单独的范围,包含include和require引入的文件

global关键字

在方法内使用global关键字申明全局变量

使用$GLOBALS数组,索引为变量名的字符串。

静态变量

程序离开作用域时,值不丢失

全局和静态变量的引用

在 Zend 引擎 1 代,它驱动了 PHP4,对于变量的 static 和 global 定义是以引用的方式实现的。

可变变量

变量名可以动态的设置和使用

<?php
$a = 'hello';
$ $a ='world';
echo "$a ${$a}"
echo "$a $hello";


二者的输出是完全一样的。

来自PHP之外的变量

HTML表单(GET和POST)

使用超全局变量
$_POST
$_GET


IMAGE SUBMIT变量名

当用图片替代标准按钮是,除了表单,还会包含点击的图片位置的两个变量
sub_x
sub_y


HTTP Cookies

$_COOKIE

setcookie()

变量名中的点

自动替换成下划线

确定变量类型

php会判断变量类型并在需要的时候进行转换,因此在某一时刻给定的变量是何种类型并不明显。

常量

语法

defined()
函数定义常量,一旦定义不能改变或者取消。

常量只能包含标量数据(boolean,integer,folat和string)。不该在常量前加“$”,如果常量名是动态的,可以用
constant()
获取常量值,用
get_defined_constants()
可以获取已经定义的常量列表。

常量和变量有如下不同:

1. 常量前面没有美元符号($);

2. 常量只能用 define() 函数定义,而不能通过赋值语句;

3. 常量可以不用理会变量的作用域而在任何地方定义和访问;

4. 常量一旦定义就不能被重新定义或者取消定义;

5. 常量的值只能是标量。

魔术常量

PHP向他运行的任何脚本提供了大量预定义常量。有八个魔术常量他们的值随他们在代码中的位置改变而改变。

LINE 文件中的当前行号。

FILE 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起, FILE 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

DIR 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =

FUNCTION 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

CLASS 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 CLASS 对 trait 也起作用。当用在 trait 方法中时,CLASS 是调用 trait 方法的类的名字。

TRAIT Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

METHOD 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

NAMESPACE 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

运算符

运算符优先级

尽量使用括号增加可读性

算术运算符

与基本数学一致。

出发总是返回浮点数,除非两个整数正好整除。

赋值运算符

基本类型传值,其他传引用。

位运算符

任何方向移出去的位都会被丢弃,正负号不保留。

比较运算符

等于,比较类型转换后是否相等

全等去,除了值相等,类型也必须相等

错误控制运算符

@
放在表达式前,则该表达式产生的任何错误信息都会被忽略掉

执行运算符

反引号"`"
,将其中内容作为外城命令来执行,并将其输出信息返回。

递增、递减运算符

++,–

逻辑运算符

&&,||,!,Xor。

字符串运算符

.
.=


数组运算符

联合:+

等/不等:==/!=(<>)

全等/不全等:===/!==

类型运算符

instanceof
确定一个变量是否属于某一类的实例。

流程控制

if,else;while;do-while;for;foreach;switch;continue;break;return

流程控制的替代语法

把左花括号换成冒号“{“–>”:”。

右花括号换成“endif”;”endwhile”,”endfor”,”endforeach”,”endswitch”。

替代语法中else if不能分开写。

declare

设定一段代码的执行指令

Ticks

时钟周期是在declare代码段中解释器每执行N跳指令就会发生的事件。

<?php

declare( ticks = 1 );//N在此处指定为1

// A function called on each tick event
function  tick_handler ()
{
echo  "tick_handler() called\n" ;
}

register_tick_function ( 'tick_handler' );

$a  =  1 ;

if ( $a  >  0 ) {
$a  +=  2 ;
print( $a );
}

?>


Encoding

对每段脚本指定其编码方式。

require、include

包含并运行指定文件,查找优先级为:

1. 参数路径

2. include_path目录

3. 调用脚本文件所在目录和当前目录

require处理失败时终止,产生错误,include处理失败时继续运行,产生警告。

当文件被包含时,被包含文件的内容就可以被包含的文件所使用。

require_once、include_once

只包含一次

变量重新赋值,函数重复定义等问题

goto

跳转到标记位置。

用目标名称和冒号标记。

函数

用户自定义函数

任何有效的php代码都能出现在函数内部,包括其他函数的和类的定义。

函数的调用不必再定义之前,除非是有条件定义。如:

<?php

$makefoo  =  true ;

/* 不能在此处调用foo()函数,
因为它还不存在,但可以调用bar()函数。*/

bar ();

if ( $makefoo ) {
function  foo ()
{
echo  "I don't exist until program execution reaches me.\n" ;
}
}

/* 现在可以安全调用函数 foo()了,
因为 $makefoo 值为真 */

if ( $makefoo )  foo ();

function  bar ()
{
echo  "I exist immediately upon program start.\n" ;
}

?>


所有函数都具有全局作用域,定义在函数内的函数可以在函数外被调用。

支持可变数量的参数

函数参数

php默认按值传参。

按引用传参

在定义函数的参数前加上
&


默认参数

默认参数必须是常量表达式。

任何默认参数必须放在肥默认参数的右侧。

可变函数

如果变量名后面有圆括号,php将寻找于变量的值同名的函数,并尝试执行他。

匿名函数

也叫闭包函数,语序临时创建一个没有指定名称的函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: