PHP笔记1.0
概念补缺
DRY原则:don't repeat yourself尽量减少重复。
语法糖(Syntactic sugar),也译为糖衣语法,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
常量
define(name, value); name可以大写可以小写。
1.数据类型:三大类,八种数据类型
- 标量
- 整型
- 浮点型-PHP不区分单双精度类型
- 字符串-在utf-8字符编码下,一个汉字等于3个字符,关于变量在字符串中解析问题,可以使用{}隔离区分
字符串操作的一些函数:
1.1 substr(string,start,end); 截取字符串。
1.2 strpos(string,要查找的字符串); 查找字符串中第一次出现的位置。
1.3 strrpos(string,要查找的字符串); 查找字符串最后出现的位置。
1.4 trim(string,可选参数);取出首位空格或者特殊字符。
1.5 strtoupper() strtolower() 字符串大小写转换。
1.6 ucwords(string); 将单词首字母大写。
1.7 str_replace(search, replace, subject); 替换所匹配的内容。
1.8 gzcompress(string); 压缩字符串。gzuncompress(string); 解压字符串。 - boolean
- 混合型
- 数组:键名也称为下标。以整型为下标称为索引数组,以字符串为下标称为关联数组,以整型加字符串为下标称为混合型数组。添加没有下标的值的时候,会由前面的最大下标加1。如果数组层级太多,用var_dump无法正常显示,可以使用
echo '<pre>'
print_r()打印显示
ecoh '</pre>'
之所以称数组为混合型,因为其值可以为整型,字符串等等混合。
目前流行的数组定义为$a=[];代替传统的数组$a=array();
数组中的一些常用函数
array_push($a, 'hello');//数组后面添加元素
array_unshift($a, 'nihao');//数组前面添加元素
array_pop($a);//删除数组最后面的一个元素
array_shift($a);//删除数组前面的一个元素
explode(delimiter, string);分割字符串
implode(glue, pieces);组合字符串 - 对象
- 数组:键名也称为下标。以整型为下标称为索引数组,以字符串为下标称为关联数组,以整型加字符串为下标称为混合型数组。添加没有下标的值的时候,会由前面的最大下标加1。如果数组层级太多,用var_dump无法正常显示,可以使用
- 特殊类型
- 资源
$a=fopen('dadada.php', 'w');
var_dump($a);
返回的就是一个资源类型 - 空
使用var_dump查看空类型的时候,你看到的只有一个null,因为空类型和值都是空
php中未赋值的变量默认为null;
unset以后的值都是null;
- 资源
类型转换
- is_系列
- php是弱类型,可以发生自动类型转换
转译
- 可以将特殊字符转换为普通字符,也可以将普通字符转换为特殊字符。
html中接入一些php写法
<?php $a=true; ?>
<?php if($a){?>
<h3>我是真的</h3>
<?php }else{?>
<h3>hello every</h3>
<?php }?>
<?php if($a):?>
<h4>对的</h4>
<?php else:?>
<h4>错的</h4>
<?php endif;?>
<?php for($i=0;$i<10;$i++):?>
<?php echo $i.'<br />';?>
<?php endfor;?>
include与include_once的区别
include引入多少次即显示多少次,include_once引入多少侧次,即显示一次,引入时会检查是否已经引入。
检测变量是否设置值
isset()
作用:判断当前变量是否赋值
- 返回值:如果已经赋值,返回true,不管是整型,字符串,都返回true
- 如果没有赋值,或者变量不存在,或者变量值为null,返回false
empty()
作用,判断当前变量是否为空 - 如果没有赋值或者变量不存在返回true
- 如果变量赋值,是整型的0字符串的空字符串,浮点0.0,false,还有null(空),空数组。结果为空。
扩展:布尔类型if(){}中判断语句1和0分别代表了真和假。
数据验证,快速写接口的一些方法
// 检查post传过来的数据
if (filter_has_var(INPUT_POST,'email1')) {
echo "data found";
}else{
echo 'no data';
}
//验证是否是邮箱
if (isset($_POST['email'])) {
// 验证内容是否是邮箱
if (filter_input(INPUT_POST, 'email',FILTER_VALIDATE_EMAIL)) {
echo "邮箱合法";
}else{
echo "邮箱不合法";
}
}
FILTER_VALIDATE_BOOLEAN
FILTER_VALIDATE_EMAIL
FILTER_VALIDATE_FLOAT
FILTER_VALIDATE_INT
FILTER_VALIDATE_IP
FILTER_VALIDATE_REGEXP
FILTER_VALIDATE_URL
FILTER_VALIDATE_EMAIL
FILTER_VALIDATE_ENCODED
FILTER_VALIDATE_NUMBER_FLOAT
FILTER_VALIDATE_NUMBER_INT
FILTER_VALIDATE_SPECIAL_CHARS
FILTER_VALIDATE_STRING
FILTER_VALIDATE_URL
session、cookie
$_SESSION用来存储会话,相当于一个中间件,类似于一个u盘,像一个盘子,使用$_SESSION时必须开启session_start()函数。
$COOKIE[]的作用:
- 记录访客的某些信息。
- 在页面之间传递变量
- 将所查看的Internet页存储在Cookie临时文件夹中,可以提高以后浏览的速度。
函数
- 函数中return值了,调用的时候只是返回了一个值,并不能echo到屏幕上,可以使用调用赋给变量,echo变量输出。
- 函数名字可以使用字母数字汉字,但是数字不能作为开头。调用时,函数名称不区分大小写。函数调用不分先后,可以在自定义函数以前也可以在函数自定义以后。函数不可以重名。函数体如果读到了return,函数后面的内容将不会再执行了。
- 实参是实际调用参数时传入的值。形参是函数传入的形式参数。函数调用时,实参传给形参。实参个数可以大于等于形参。函数func_get_args()在函数内部可以获取传入的实参内容,并返回一个数组。
面向对象
- 类和对象的关系:
对象:对象是由类实例化而来的
类:类是由对象抽象总结而来的
对类实例化对象的时候,new 类()这儿的括号可加可不加。
写类的时候,可以先写方法,在写方法的时候,看到所需的桥梁,添加变量。
set()和get()
<?php
/**
* 通过set、get方法将私有变量通过公共方法展现出来
*/
class People
{
private $name;
public function setName($name){
$this->name=$name;
}
public function getName(){
return $this->name;
}
}
$people=new People;
$people->setName('花花');
$people1=$people->getName();
echo $people1;
?>
/**
* __construct没有上面麻烦调用,自动执行,代码简洁
*/
class Car
{
function __construct($car)
{
echo $car;
}
}
new Car('bei chi');
//php采用垃圾回收机制,即使不使用__destruct也会自动回收不用变量
//关于php中子类调用方式中,$this->方法,如果子类没有则检测父类,如果完全调用父类则使用parent::方法。