1、php调用可变的函数
<?php
function func() {
echo 'my function called.';
}
$name = 'func';
//调用可变函数
$name();
?>
等同于直接func();
2、替换函数str_replace
<?php
$str = '苹果很好吃。';
//将变量$str中的苹果替换成香蕉
$str=str_replace('苹果','香蕉',$str);
echo $str;
?>
3、判断方法是否存在的函数function_exists,类似的还有class_exists检查类是否存在,file_exists检查文件是否存在
<?php
function func() {
echo 'exists';
}
$name = 'func';
if (function_exists($name) ) { //判断函数是否存在
$name();
}
?>
class MyClass{
}
// 使用前检查类是否存在
if (class_exists('MyClass')) {
$myclass = new MyClass();
}
$filename = 'test.txt';
if (!file_exists($filename)) {
echo $filename . ' not exists.';
}
4、定义类
<?php
//定义一个类
class Car {
var $name = '汽车';
function getName() {
return $this->name;
}
}
//实例化一个car对象
$car = new Car();
$car->name = '奥迪A6'; //设置对象的属性值
echo $car->getName(); //调用对象的方法 输出对象的名字
?>
打印值,需要用$car->getName()
<?php
class Car{
//在这里定义一个共有属性name
public $name='汽车';
}
$car = new Car();
//在这里输出$car对象的name属性
echo $car->name; //输出:汽车
?>
使用关键字static修饰的,以通过类名直接调用,操作符为双冒号::。
class Car {
public static function getName() {
return '汽车';
}
}
echo Car::getName(); //结果为“汽车”
<?php
class Car {
public $speed = 0;
//增加speedUp方法,使speed加10
public function speedUp(){
$this->speed+=10;
}
}
$car = new Car();
$car->speedUp();
echo $car->speed; //输出为10
5、构造函数与析构函数
<?php
class Car {
//增加构造函数与析构函数
function __construct() {
print "构造函数被调用 \n";
}
function __destruct() {
print "析构函数被调用 \n";
}
}
$car = new Car();
?>
输出结果:
构造函数被调用 析构函数被调用若调用父类的构造函数,需要使用parent::__construct()
<?php
class Car {
function __construct() {
print "父类构造函数被调用\n";
}
}
class Truck extends Car {
function __construct() {
print "子类构造函数被调用\n";
parent::__construct();
}
}
$car = new Truck();
?>
输出结果:
子类构造函数被调用 父类构造函数被调用6、调用static,可以直接用类名::方法名进行调用
<?php
class Car {
private static $speed = 10;
public function getSpeed() {
return self::$speed;
}
//在这里定义一个静态方法,实现速度累加10
public static function speedUp(){
return self::$speed+=10;
}
}
$car = new Car();
Car::speedUp(); //调用静态方法加速,一般的调用可用$car->speedUp();
echo $car->getSpeed(); //调用共有方法输出当前的速度值
?>
输出结果:20
注意:$speed的初始值,一般前置都需要定义private,不可直接$speed=0;
7、继承类举例
速度Truck速度由父类10加到60
<?php
class Car {
public $speed = 0; //汽车的起始速度是0
public function speedUp() {
$this->speed += 10;
return $this->speed;
}
}
//定义继承于Car的Truck类
class Truck extends Car{
public function speedUp() {
$this->speed =parent::speedUp()+50;
}
}
$car = new Truck();
$car->speedUp();
echo $car->speed;
?>
8、重载,通过__call来实现
<?php
class Car {
public $speed = 10;
//在这里使用重载实现speedDown方法
public function __call($name,$args){
if($name=='speedDown'){
$this->speed-=10;
}
}
}
$car = new Car();
$car->speedDown(); //调用不存在的speedDown方法,输出结果为0,减速10
echo $car->speed;
------------------------------------------------------------------------------------------------------------
来源:慕课网