PHP是一种松散类型的语言
连接符 “.” 是一个点;其它语言为”+” ;
注释
PHP //
HTML <!-- -->
CSS /* */
memory_get_usage 获取当前PHP消耗的内存
echo 输出boolean的时候,true输出1,false什么也不输出
八进制 前面是数字0;十六进制 前面是0x;
PHP字符串
字符串官方文档
字符串中包含引号的时候
1.单引号里面双引号
2.双引号里面单引号
3.使用转义字符 \
当引号里遇到$字符怎么办
1.双引号里,特殊字符的意义正常作用(有点像shell里面的定义),也可以理解字串变量仍可使用
2.单引号里,特殊符号失去意义
当字符串过长
Heredoc结构形式
<<<标识符
...
...
标识符;
特殊类型—资源
打开服务器文件,查看内容。fopen()函数
unset();复制变量清空
常量
define()函数
$p="myvalue";
define($p,1);
define("myvalue",1);
//常量如何取值
$result=myvalue*3*5;
$result=constant("myvalue")*3*5;
//判定常量是否被定义,返回boolean
defined($p);
defiend("myvalue");
系统常量
__FILE__: 获取文件的物理位置
__LINE__: 当前代码在第几行
PHP_VERSION 解析器的版本号
PHP_OS 当前PHP版本的操作系统名称
=== 全等 (数值相等,类型也相等)
<> 不等
!== 非全等,值不相同,或者类型不同,返回true
. 连接运算符
.= 连接赋值运算符,右边参数附加到左边参数后
错误控制运算符 @
date_default_timezone_set('asia/shanghai');
$week = date("w");//获取当天星期几
foreach (数组 as 值) 只取值,不取下标
foreach (数组 as 下标 => 值) 同时取下标和值
foreach ($arry_name as $v)
foreach($array_name $key => $v)
$arr = array();
PHP两种数组,索引数组,关联数组
索引数组赋值三种方式
$arr[0] = '苹果';
array('0'=>'苹果');
array('苹果');
访问索引数组内容
$arr['index'];
$arr[$index];//这尼玛就不用加''了
关联数组初始化
$arr=array(
'apple' => '苹果',
'banana' =>'香蕉',
...
);
赋值
$arr['apple'] = '苹果';
访问关联数组内容
$fruit0 = $fruit['banana'];
可变函数
function name() {
echo 'jobs';
}
$func = 'name';
$func(); //调用可变函数
内置函数
str_replace(); 字符串替换
function_exists 判断函数是否存在
method_exists 判断类是否存在
静态属性与方法可以在不实例化类的情况下调用
class Car {
private static $speed = 10;
public static function getSpeed() {
return self::$speed;
}
}
echo Car::getSpeed(); //调用静态方法
动态调用
$func = 'getSpeed';
$className = 'Car';
echo $className::$func(); //动态调用静态方法
静态方法中,$this 不允许使用
可以使用self,parent,static内部调用
class Car {
private function __construct() {
echo 'object create';
}
private static $_object = null;
public static function getInstance() {
if (empty(self::$_object)) {
self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象
}
return self::$_object;
}
}
//$car = new Car(); //这里不允许直接实例化对象
$car = Car::getInstance(); //通过静态方法来获得一个实例
重载
class Car {
private $ary = array();
public function __set($key, $val) {
$this->ary[$key] = $val;
}
public function __get($key) {
if (isset($this->ary[$key])) {
return $this->ary[$key];
}
return null;
}
public function __isset($key) {
if (isset($this->ary[$key])) {
return true;
}
return false;
}
public function __unset($key) {
unset($this->ary[$key]);
}
}
$car = new Car();
$car->name = '汽车'; //name属性动态创建并赋值
echo $car->name;
class Car {
public $speed = 0;
public function __call($name, $args) {
if ($name == 'speedUp') {
$this->speed += 10;
}
}
}
$car = new Car();
$car->speedUp(); //调用不存在的方法会使用重载
echo $car->speed;
去除字符串首尾空格
trim 两端 ,rtrim 右空格去除,ltrim 左空格去除
获取字符串的长度
strlen()
mb_strlen($str,”UTF-8”) 中文长度
字符串截取
substr(字符串变量,开始截取的位置,截取个数)
mb_substr() 中文截取,需要设置网页编码UTF-8在参数列表中
查找字符串
strpos();
strpos(要处理的字符串, 要定位的字符串, 定位的起始位置[可选])
替换字符串
str_replace(要查找的字符串, 要替换的字符串, 被搜索的字符串, 替换进行计数[可选])
格式化字符串
sprintf(格式,要转化的字符串);
%01.2f
% 格式开始
0 填空字元
1 占位数 (小数点也算一个占位)
.2 小数点占位数
f 转换字符结尾
字符串的合并与分割
implode() 合并函数
explode() 分割函数
字符串的转义 addslashes()
用于对特殊字符加上转义字符,返回一个字符串
OOP
调用 - >
构造函数
function __construct(){...}
析构函数
function __destruct(){...}
对象引用 &
继承 extends关键字,在PHP中只能单继承
访问控制(public,protected,private)
private---类的内部访问,这里各个语言,有一个有意思的方式,在类的内部定义了一个function get{ this->私有属性 }
protected --- 自身和子类内部可以访问
静态static --- 如果不使用该关键字,定义的属性和方法会随着不同对象的使用,譬如修改职位,造成不同对象的差异性;
访问方式 关键字 self | static
parent::静态变量 子类访问父类静态成员
final关键字(PHP 5) 不希望子类修改,final类不能被任何类继承
//接口
interface
$obj instanceof 接口类 // 判断对象接口实现了没
可以用extends让接口继承接口,当类实现子接口时,父接口定义的方法,也需要类来实现
//多态
//抽象 abstract关键字
魔术方法
//当作字符串来用时,自动调用tostring
class MagicTest{
public function __tostring(){
return "对象转换成string的时候,自动调用"
}
public function __invoke(){
return "把对象当作一个方法的时候,自动调用";
}
public function __call ($name,$argument){
echo "Calling ".$name."with parameters: ".implode(",",$argument)."\n";
}
public static function __callStatic(){
...
}
}
$obj = new MagicTest();
echo $obj."\n";
$obj(5);
_get()
_set()
_isset()
_unset()
PHP语言特性详解
1052

被折叠的 条评论
为什么被折叠?



