PHP Class类与对象学习笔记
个人做的笔记.....用于借鉴,如有错请指出,谢谢
代码如下 | 复制代码 |
<?php Class 对象实例说明( 普通类 ) *******************************************/ */ Class 对象实例说明( 抽象类 ) *******************************************/ /******************************************* Class 对象实例说明( 继承类 ) *******************************************/ Class 对象实例说明( 接口 ) *******************************************/ 什么情况下使用接口 **********************************/ ?> |
小结
在类内部访问静态成员属性或者方法,使用 self::(注意不是 $slef),如:
代码如下 | 复制代码 |
slef:: $country |
在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),如:
代码如下 | 复制代码 |
parent:: $country |
外部访问静态成员属性和方法为 类名/子类名:: ,如:
代码如下 | 复制代码 |
Person::$country |
但静态方法也可以通过普通对象的方式访问。
•类/对象 函数
•__autoload — 尝试加载未定义的类
•call_user_method_array — 调用一个用户方法,同时传递参数数组(已废弃)
•call_user_method — 对特定对象调用用户方法(已废弃)
•class_alias — 为一个类创建别名
•class_exists — 检查类是否已定义
•get_called_class — 后期静态绑定("Late Static Binding")类的名称
•get_class_methods — 返回由类的方法名组成的数组
•get_class_vars — 返回由类的默认属性组成的数组
•get_class — 返回对象的类名
•get_declared_classes — 返回由已定义类的名字所组成的数组
•get_declared_interfaces — 返回一个数组包含所有已声明的接口
•get_declared_traits — 返回所有已定义的 traits 的数组
•get_object_vars — 返回由对象属性组成的关联数组
•get_parent_class — 返回对象或类的父类名
•interface_exists — 检查接口是否已被定义
•is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE
•is_subclass_of — 如果此对象是该类的子类,则返回 TRUE
•method_exists — 检查类的方法是否存在
•property_exists — 检查对象或类是否具有该属性
•trait_exists — 检查指定的 trait 是否存在
if单分支的基本语法结构
if(条件表达式){
//执行语句;
}
if双分支
基本语法结构
if(条件表达式){
//执行语句;
}else{
//执行语句;
}
if多重分支
基本语法结构是
if(条件表达式){
//执行语句;
}else if (条件表达式){
//执行语句;
}else if(条件表示式){
//执行语句;
}else{//这里可能还有更多的else if
//执行语句;
}
☞ 对上面的结构请注意:
1) else if 可以有一个,也可以有多个
2) else 可以没有
例
代码如下 | 复制代码 |
<html> <?php |
switch分支语句
基本语法结构
switch(表达式){
case 常量1:
//执行语句;
break;
case 常量2:
//执行语句;
break;
defual:
//执行语句;
break;
}
例
下面两个例子用不同方法实现同样的事情,第一个是用 if...elseif...else 语句,一个使用 switch语句。
代码如下 | 复制代码 |
<?phpif ($i == 0) { echo "i equals 0";} elseif ($i == 1) { echo "i equals 1";} elseif ($i == 2) { echo "i equals 2";} else { echo "i is not equal to 0, 1 or 2"; } ?> |
上面这段 PHP 代码的意思是:如果变量 $i 等于 0,则输出 "i equals 0";如果变量 $i 等于 1,则输出 "i equals 1";如果变量 $i 等于 2,则输出 "i equals 2";如果都不是,则输出"i is not equal to 0, 1 or 2"。
switch 语句和 elseif 语句的比较
在 switch 语句中,条件只求一次,然后和每个 case 比较,而在 elseif 语句中,条件会再次求值。如果你的条件比较复杂,或者是多次循环,用 switch 语句速度会更加快些。
代码如下 | 复制代码 |
isEmpty=""; $isEmpty=" 非空 "; $test = empty($isEmpty)?"":trim($isEmpty); |
三目运算符?: 根据前面的条件empty($isEmpty)true或者false,条件为true时,计算?后面的表达式,false时计算:后面的表达式。
如果不习惯可以改成如下代码
代码如下 | 复制代码 |
if (empty($isEmpty)) //条件成立 { { $cookie = trim($isEmpty);
}
|
☞ 请注意:
1) case 语句有一到多
2) defaul 语句可以没有(根据自己代码的业务逻辑)
3) 通常,在case 语句后,要带break ,表示退出switch语句
4) 常量的类型 (int, float, 字符串, 布尔型)
补充
比较运算符。
$a == $b 等于 TRUE,如果 $a 等于 $b。
$a != $b 不等 TRUE,如果 $a 不等于 $b。
$a <> $b 不等 TRUE,如果 $a 不等于 $b。
$a < $b 小与 TRUE,如果 $a 严格小于 $b。
$a > $b 大于 TRUE,如果 $a 严格 $b。
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。
逻辑运算符。
$a and $b And(逻辑与) TRUE,如果 $a 与 $b 都为 TRUE。
$a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
$a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE。
$a && $b And(逻辑与) TRUE,如果 $a 与 $b 都为 TRUE。
$a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
一 PHP常用数据类型
1.基本数据类型
1.1整型
1.2小数型(浮动数) 包含单精度和双精度
1.3布尔类型 (表示真,和 假)
1.4字符串
2.复合数据类型
2.1数组(array)
2.2对象 (object)
3.特殊数据类型
3.1null
3.2资源类型(resource)
二 PHP的基本语法
1.PHP 定义变量必需以 $ 这个符号开头,区分大小写。
2.变量的名称,应当以字母或者下划线开头,不要用数字开头,也不要用特殊字符开头。
第一个PHP程序
代码如下 | 复制代码 |
<?php echo "Hello World!"; ?> |
1 注释
1.1多行
/*
xxxx
*/
1.2单行
//xxxxx
2.赋值
$a = 'test';
2.1 检查变量是否已声明
isset($a)
2.2 释放变量
unset($a);
2.3 静态变量
static $a;
静态变量可在一个函数几次调用中保持数值,而不会被系统释放,但只能在声明它的函数集中访问到,只能在第一次声明时初始化。
3. 基本类型
3.1 数字类型
3.1.1整数(integer,关键字int)
.整数可用8进制 10进制 16进制 表示
$a=123; //10进制
$b=0123; //8进制
$c=0x123; //16进制
.由于操作系统不同整数精度变化很大,但32位是最常见的
3.1.2浮点(float,关键字float,64位浮点数,精度14位)
.PHP中float和double是等同的
.使用浮点数切记:他们只是近似值
如:2.5在内部常被表示为2.499999999
又如:
if(0.7+0.1>=0.8){
echo 'a';
}else{
echo 'b';
}
返回值为b,这取决于浮点数的确切实现方式,推荐做法是避免使用浮点值做比较
3.2 字符串
.用单引号或双引号包围
如:echo "Hello"; echo 'Hello';
.双引号中的变量会被解释,单引号中的则不会
如:var $name = 'jano';
echo "my name is $name.";//显示 my name is jano
echo 'my name is $name'; //显示 my name is $name
.双引号中的变量可用{}包围来区分变量和后面的字母
如:var $n = "my name is {$name}Yu";//如果没有{}就无法区分变量和字符
.heredoc
$a = <<< HTM
skjdfjsd
lksdfjsdlf
HTML; //后面的表示必须顶在最前面
.获取字符串中的某个字符
$a = 'Hello';
echo $a{1}; // 显示e
echo $a[1]; // 显示e
推荐使用第一种写法可以和数组区分开
3.3 布尔值
true false
4.常用函数
. nl2br 吧字符串中的换行符转化成<br />
如:echo nl2br($a);
.var_dump
显示变量类型和值,如:var_dump($a);
.print_r
var_dump加强版,打印对象类型和内容,数组则打出所有元素,类对象则打印所有成员
如:$a = array(1,2,3,4,5);
print_r($a);
5.数组
数组用array方法声明
例:
$a = array('a','b','c');
$a = array('a','b',array(1,2,3));
.默认从索引0开始赋值
如:$a[]='a'; //$a[0]='a';
$a[]='b'; //$a[1]='b';
.使用字符串值做索引
如:
$a = array('car'=>'Ferrari','Number'=>21,'City'=>'CQ');
echo $a['car'];
.遍历并更改数组元素值
foreach($array as $key=>&$value){// &$value
//...
}
6.特殊类型和值
.NULL 区分大小写,表示无值,从没赋值,用unset清除
.资源
7.强制类型转换
(int)$a
(float)$a
(string)$a
(bool)$a
(array)$a
(object)$a
.特殊的
(int)"0123";//返回123,没有把8进制0123转换为10进制数字
(int)"123 mu tou ren";//返回123
(int)"mu tou ren 123";//返回0,因为转换只从第一个字符开始读,发现非数字立即停止
.转换为布尔值
非空非零则为true(包括正数和负数),0为false
包含0个元素的数组为false
NULL为false
转换为整数
.浮点转换为整型
小数点后的数字舍弃,如果超过证书有效位,结果可能是0或者最小负数
.布尔转换为整型
true为1
false为0
.字符串转换为整型
对字符串左侧第一位进行判断。如果第一位是数字,则会从第一位开始将读取到数字转换成整数。如果第一位不是数字结果为0.
.PHP没有提供其他类型转换为整数的方法
转换为浮点数
.整数转换为浮点数
结果不变
.布尔转换为浮点数
true为1
false为0
.字符串转换成浮点数
与整数类似
.PHP没有提供其他类型转换为浮点数的方法
转换为字符串
将非字符串转换为字符串的方法是在变量前使用“(string)”强制转换。
规则如下:
1.整型或浮点型:结果为其值
2.布尔型:true转换为'1' , false转换为空字符串
3.对象或数组:如果被转换的变量是对象或数组,则转换结果将为字符串对象或字符串数组,需要根据实际情况进行分析。
4.资源类型:返回资源标识号
8.类型判断与获取
.转换成数组
在变量前用“(array)”强制转换。将变量转换成员变量数据类型相同的数组,数组中只有一个元素。
如:
$a=1;
print_r((array)$a);
结果:
Array
(
[0]=> 1
)
.转换为对象
在变量前用“(object)”强制转换。将生成一个新对象,其中名为scalar的成员变量将包含原变量的值。如:
$a=1;
$o = (object)$a;
echo $o->scalar;
使用函数进行数据转换
bool settype(var, string type)
type值: boolean,integer,float,string,array,object,null
.判断类型函数
is_integer 如:is_integer($a); //返回true或false
is_float
is_double
is_real
is_int
is_long
is_numeric
is_string
is_bool
is_array
is_object
is_null
is_resource
is_scalar 是否为一个标量
.类型获取
gettype($a);
9.变量和常量
.常量
define('NUM_USR','0');
$u = NUM_USR;
.引用
$a=0;
$b = &$a;
$b++;
echo $a;//显示1,因为$b是$a的引用,$b改变就表示$a改变
10.操作符
10.1 数学操作符
+ - * / %(取余)
10.2 比较运算符
==
=== 值相同,类型相同
!=
<> 和!=一样都是不等于
!== 值相同,类型不同
<
>
<=
>=
10.3 逻辑运算符
and && 与
or || 或
xor 异或,若一个为true,但不是两个都为true,则结果为true
! 非
10.4 按位操作
& 按位与
| 按位或
^ 按位异或
~ 按位非
<< 左移位
>> 右移位
10.5 三元操作符
表示问号前面的表达式是否为true,是则返回冒号前面的值,不是则返回冒号后面的值
如:
$c = $a > $b ? 1:2;
echo $a>$b ? "hello":"no";
.下面两个语句是等价的
$a = ($b != 'china') ? true : false;
$a = $b != 'china';
10.6 其他操作符
++ 自增
-- 自减
@ 忽略特定函数的调用失败报错,如:$u=@file(xxx);
. 字符串连接操作,如:$a = 'hello'.'world'; $a = 'hello'.$a;
11.7 特殊的逻辑运算符表达式
$a = 0;
$b = 100;
echo $a || $b;//$a转换为bool值为true时,echo $a,否则echo $b,不管$b表达式是否为true,此表达式会始终显示100
echo $a && $b;//将什么都不显示,因为整个表达式$a && $b返回false
$a = 1;
$b = 0;
echo $a && $b;//将什么都不显示,因为整个表达式$a && $b返回false
echo $a && $b;//始终显示$a
$a = 1;
$b = 0;
$a && $b=12;
echo $b;//显示12,$a是否为true,为true就会执行$b=12,系统首先读取&&,知道这是个与,于是开始执行&&前面的语句,发现返回true就再 执行&&后面的语句,发现返回false就不会再执行&&后面的语句了,因为&&逻辑,只要有一个false 整个表达式就变成false
PHP基本语法和数据类型:
(1)、PHP基本语法:
1、htm 和 php 混编
2、一个语句以 ; (分号结束)
3、如何定义一个变量,和变量的使用
(2)、PHP数据运算类型
四种标量类型:
boolean(布尔型) 理解为真假型
integer(整型)
float(浮点型,也作“double”) 理解为小数型
string(字符串)
两种复合类型:
array(数组)
object(对象)
(3)PHP五种运算类型
1、算术运算
2、赋值运算(如:$a=100)
3、比较运算(如:$a<$b)
4、逻辑运算(如:$a&&$b)
5、递增凝递减运算(如:$a++)
(4)switch条件语句
switch条件语句
<?php
$i=1;
switch($i){
case 0;
echo “i的值为0″;
break;
case 1;
echo “i的值为1″;
break;
case 2;
echo “i的值为2″;
break;
default: echo “以上的几个值都不是”;
}
?>
break n 跳出循环语句
break n跳出n层循环
例:
<?php
for($i=1;$i<=5;$i++){
echo “i=”.$i.”<br>”;
for($j=1;$j<=5;$j++){
echo “ j=”.$j.”<br>”;
for($k=1;$k<=5;$k++){
echo “ k=”.$k.”<br>”;
if($k==2){
break;
}
}
if($j==3){
break 2;
}
}
echo “<br>”;
}
?>
(5)do while循环
<?php
//先执行一次再判断
do{
echo “执行循环”;
$a++;
}while($a>100);//注意这里有一个分号
echo “<br>”;
//先判断再执行
while($a>100){
echo “执行循环”;
$a++;
}
?>
PHP数组常用到的函数
foreach($arr as $key=>$val){}//遍历数组
count($arr)//统计数组的长度
is_array($arr)//判断数组
explode(“key”,$str)//分割字符串成数组
在php中获取url地址我们有很多函数可以使用,主要是全局变量server为我提供了不少方法,下面我们一起来看看吧。常用函数
代码如下 | 复制代码 |
//获取网页地址 //获取网址参数 //获取用户代理 //获取完整的url //包含端口号的完整url //只取路径 |
看个例子,可以获取完整url
代码如下 | 复制代码 |
<?php function curpageurl() if ($_server["https"] == "on") if ($_server["server_port"] != "80") |
相关文章
- 这篇文章主要介绍了java8如何用Stream查List对象某属性是否有重复的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
- 这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了JavaScript预解析,对象的的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助...2021-11-10
如何在Spring WebFlux的任何地方获取Request对象
这篇文章主要介绍了如何在Spring WebFlux的任何地方获取Request对象,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下...2021-01-26牛叉的Jquery――Jquery与DOM对象的互相转换及DOM的三种操作
只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的dom操作。这就需要我们知道如何将jQuery对象和DOM的相互转换的方法。1...2015-10-30- js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方便,于是各方面整理总结了如下一个函数,能够将数组或者对象这类的结果一一打印出来,具体代码如下: fu...2015-10-21
- 我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
- 1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
- 本文给大家介绍如何替换json对象中的key,通过实例代码给大家介绍key的替换方法,代码也很简单,需要的朋友参考下吧...2021-06-02
- 这篇文章主要介绍了javascript self对象使用详解的相关资料,需要的朋友可以参考下...2016-10-20
ActiveX部件不能创建对象:dm.dmsoft代码:800A01AD
vbs调用插件报:ActiveX部件不能创建对象,代码:800A01AD,一般是因为病毒导致dll文件丢失或者64系统问题导致,需要的朋友可以参考下...2020-06-30- 这篇文章主要为大家介绍了JavaScript事件对象,了解JavaScript事件...2016-01-26
- 当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
- 这篇文章主要介绍了Xml中使用foreach遍历对象实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-12-04
解决SpringCloud Feign传对象参数调用失败的问题
这篇文章主要介绍了解决SpringCloud Feign传对象参数调用失败的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-24- 这篇文章主要介绍了JS实现简单面向对象的颜色选择器,以完整实例形式分析了JavaScript基于面向对象实现颜色选择器的具体步骤与实现技巧,需要的朋友可以参考下...2016-04-23
- 这篇文章主要介绍了vue - props 声明数组和对象操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30
- 这篇文章主要介绍了Javascript对象,特别为大家分享了对象题目的一个坑,提供了解题思路,感兴趣的小伙伴们可以参考一下...2015-12-24
- 这篇文章主要介绍了JavaScript Blob对象原理及用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-14
- 在web页面中,图片居左,内容居右排列,是非常常见的效果,它也就是媒体对象,它是一种抽象的样式,可以用来构建不同类型的组件。本文给大家介绍Bootstrap媒体对象的实现,感兴趣的朋友一起学习吧...2016-05-04