##PHP描述性
###PHP 句法
PHP JAVA以 <?php 已经开始,以 ?> 完结:
<?php
// PHP 标识符
?>
PHP 中的注解:`// /* */`
###PHP 表达式
两个有效率的cp由拉丁字母或是下划线结尾,前面跟得上任一数目的拉丁字母,位数,或是换行
<?php
$var = Bob;
$Var = Joe;
echo “$var, $Var”; // 输入 “Bob, Joe”
$4site = not yet; // 违法cp;以位数结尾
$_4site = not yet; // 不合法cp;以换行结尾
$i公交站点is = mansikka; // 不合法cp;能用英文
?>
PHP 也提供更多了除此之外一类方式给表达式表达式:提及表达式。这意味著捷伊表达式单纯的提及
<?php
$foo = Bob; // 将 Bob 赋给 $foo
$bar = &$foo; // 通过 $bar 提及 $foo
$bar = “My name is $bar”; // 修改 $bar 表达式
echo $bar;
echo $foo; // $foo 的值也被修改
?>
###PHP 常量
不合法的常量名以拉丁字母或换行已经开始,前面跟着任何拉丁字母,位数或换行
<?php
// 不合法的常量名
define(“FOO”, “something”);
define(“FOO2”, “something else”);
define(“FOO_BAR”, “something more”);
// 违法的常量名
define(“2FOO”, “something”);
// 下面的定义是不合法的,但应该避免这样做:(自定义常量不要以__结尾)
// 也许将来有一天 PHP 会定义两个 __FOO__ 的魔术常量
// 这样就会与你的标识符相冲突
define(“__FOO__”, “something”);
?>
###PHP表达式
最基本的表达式形式是常量和表达式。`$a = 5;`
稍微复杂的表达式例子就是函数
function foo ()
{
return 4;
}
两个常用到表达式类型是比较表达式。这些表达式求值 false 或 true。PHP 支持 >(大于),>=(大于等于),==(等于),!=(不等于),<(小于),<= (小于等于)
– 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
– 严格比较:用三个等号 === 比较,除了比较值,也比较类型。
三元条件运算符 `$first ? $second : $third`
<?php
function double($i)
{
return $i*2;
}
$b = $a = 5; /* assign the value five into the variable $a and $b */
$c = $a++; /* a==6,c==5
$e = $d = ++$b; /* b=d=e=6
/* at this point, both $d and $e are equal to 6 */
$f = double($d++); /* assign twice the value of $d before
the increment, 2*6 = 12 to $f */
$g = double(++$e); /* assign twice the value of $e after
the increment, 2*7 = 14 to $g */
$h = $g += 10; /* first, $g is incremented by 10 and ends with the
value of 24. the value of the assignment (24) is
then assigned into $h, and $h ends with the value
of 24 as well. */
?>
###PHP 字符串表达式
并置运算符 (.) 用于把两个字符串值连接起来
`$txt1 . ” ” . $txt2; `
strlen() 函数返回字符串的长度(字节数)
`strlen(“Hello world!”); `
strpos() 函数用于在字符串内查找两个字符或一段指定的文本
`strpos(“Hello world!”,”world”); `
###PHP 运算符
#### PHP 算术运算符
(img)
#### PHP 表达式运算符
(img)
#### PHP 递增/递减运算符
(img)
#### PHP 比较运算符
(img)
#### PHP 逻辑运算符
(img)
##PHP If…Else 语句
– if 语句 – 在条件成立时执行标识符
– if…else 语句 – 在条件成立时执行一块标识符,条件不成立时执行另一块标识符
– if…elseif….else 语句 – 在若干条件之一成立时执行一个标识符块
– switch 语句 – 在若干条件之一成立时执行两个标识符块
if (条件)
{
if 条件成立时执行的标识符;
}
elseif (条件)
{
elseif 条件成立时执行的标识符;
}
else
{
条件不成立时执行的标识符;
}
##PHP Switch 语句
工作原理:首先对两个单纯的表达式 n(通常是表达式)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。标识符执行后,使用 break 来阻止标识符跳入下两个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。
switch (n)
{
case label1:
如果 n=label1,此处标识符将执行;
break;
case label2:
如果 n=label2,此处标识符将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
##PHP 数组
三种类型的数组:
– 数值数组 – 带有位数 ID 键的数组
– 关联数组 – 带有指定的键的数组,每个键关联两个值
– 多维数组 – 包含两个或多个数组的数组
#### PHP 数值数组
$cars=array(“Volvo”,”BMW”,”Toyota”);
echo “I like ” . $cars[0] . “, ” . $cars[1] . ” and ” .$cars[2] . “.”;
遍历数值数组,遍历并打印数值数组中的所有值,能使用 for 循环
for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo “<br>”;
}
#### PHP 关联数组-字典
`$age=array(“Peter”=>”35″,”Ben”=>”37″,”Joe”=>”43”);`
or
$age[Peter]=”35″;
$age[Ben]=”37″;
$age[Joe]=”43″;
遍历并打印关联数组中的所有值,能使用 foreach 循环
foreach($age as $x=>$x_value)
{
echo “Key=” . $x . “, Value=” . $x_value;
echo “<br>”;
}
##PHP 数组排序
– sort() – 对数组进行升序排列
– rsort() – 对数组进行降序排列
– asort() – 根据关联数组的值,对数组进行升序排列
– ksort() – 根据关联数组的键,对数组进行升序排列
– arsort() – 根据关联数组的值,对数组进行降序排列
– krsort() – 根据关联数组的键,对数组进行降序排列
##PHP 超级全局表达式
$GLOBALS 是PHP的两个超级全局表达式组,在两个PHPJAVA的全部作用域中都能访问。
$GLOBALS 是两个包含了全部表达式的全局组合数组。表达式的名字就是数组的键。
##PHP 循环 – While 循环
在您编写标识符时,您经常需要让相同的标识符块一次又一次地重复运行。我们能在标识符中使用循环语句来完成这个任务。
在 PHP 中,提供更多了下列循环语句:
– while – 只要指定的条件成立,则循环执行标识符块
– do…while – 首先执行一次标识符块,然后在指定的条件成立时重复这个循环
– for – 循环执行标识符块指定的次数
– foreach – 根据数组中每个元素来循环标识符块
## PHP 函数
函数的名称应该提示出它的功能
函数名称以拉丁字母或换行结尾(不能以位数结尾)
function functionName()
{
// 要执行的标识符
}
##PHP 魔术常量
`__LINE__`文件中的当前行号
`__FILE__`文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
`__DIR__`文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
`__FUNCTION__、__CLASS__、__TRAIT__、__METHOD__、__NAMESPACE__ `
##PHP 面向对象
– 类使用 class 关键字后加上类名定义。
– 类名后的一对大括号(\{\})内能定义表达式和方法。
– 类的表达式使用 var 来声明, 表达式也能初始化值。
– 函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。
class Site {
/* 成员表达式 */
var $url;
var $title;
/* 成员函数 */
function setUrl($par){
$this->url = $par;
}
function getUrl(){
echo $this->url . PHP_EOL;
}
function setTitle($par){
$this->title = $par;
}
function getTitle(){
echo $this->title . PHP_EOL;
}
}
#### PHP 构造函数
function __construct( $par1, $par2 ) {
$this->url = $par1;
$this->title = $par2;
}
####继承
class Child extends Parent {
// 标识符部分
}
####访问控制
PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
– public(公有):公有的类成员能在任何地方被访问。
– protected(受保护):受保护的类成员则能被其自身以及其子类和父类访问。
– private(私有):私有的类成员则只能被其定义所在的类访问。
####接口
使用接口(interface),能指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
// 声明两个iTemplate接口
interface iTemplate
{
public function setVariable($name, $var);
public function getHtml($template);
}
// 实现接口
class Template implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
public function getHtml($template)
{
foreach($this->vars as $name => $value) {
$template = str_replace({ . $name . }, $value, $template);
}
return $template;
}
}
####常量
能把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。
常量的值必须是两个定值,不能是表达式,类属性,数学运算的结果或函数调用。
自 PHP 5.3.0 起,能用两个表达式来动态调用类。但该表达式的值不能为关键字(如 self,parent 或 static)
` const constant = 常量值;`
####抽象类
任何两个类,如果它里面至少有两个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
定义为抽象的类不能被实例化。
继承两个抽象类的时候,子类必须定义父类中的所有抽象方法;除此之外,这些方法的访问控制必须和父类中一样(或是更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或是公有的,而不能定义为私有的
#### Static 关键字
声明类属性或方法为 static(静态),就能不实例化类而直接访问。
静态属性不能通过两个类已实例化的对象来访问(但静态方法能)。
由于静态方法不需要通过对象即可调用,所以伪表达式 $this 在静态方法中不可用。
静态属性不能由对象通过 -> 操作符来访问。
#### Final 关键字
如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果两个类被声明为 final,则不能被继承。