PHP基础2

PHP数组

  • 索引数组,数组的键是整数的数组,并且键的整数顺序是从0开始
$arr = array("apple","orange","pear");
print_r($arr);//输出数组建及对应的值

结果为:

Array
(
    [0] => apple
    [1] => orange
    [2] => pear
)
  • 关联数组,数组的键是字符串的数组
$arr = array('apple'=>"苹果",'orange'=>"橘子",'pear'=>"梨子");
print_r($arr);

结果为:

Array
(
    [apple] => 苹果
    [orange] => 橘子
    [pear] => 梨子
)

创建数组

  • 使用array()函数
$fruits = array('apple','orange');
  • 直接对数组变量赋值
$fruits[]='pear';

如果方括号中没有指定索引,则取当前最大整数索引值+1。如果当前还没有整数索引,则键名将为0。如果指定的键名已经有值了,该值将被覆盖

  • 使用range()创建指定范围单元的数组
$num = range(1,10);

PHP函数

  1. 定义
    • 使用关键字function开始
    • function后面跟函数名
    • 大括号中编写函数体
function say{
    echo "hello world"
}
  1. 调用:函数名加参数
  2. 判断函数是否存在
    function_exists("fn")判断函数fn是否存在

PHP类与面向对象

类是抽象的概念,对象是具体的实例。类通过关键字class定义,通过关键字new来创建一个实例,通过->访问对象的属性和方法

//定义一个类
class Car {
//属性
    public $name  = "汽车";
    //方法
    public function getName(){
        //方法内部可以使用$this调用对象的方法和属性
        return $this->name;
    }

}
//创建一个对象
$car = new Car();

属性(方法)声明是由关键字publicprotectedprivate开头

  • public 公有(默认)
  • protected 受保护的
  • private 私有的

受保护的属性(方法)和私有的属性(方法)不允许外部调用,在类的成员方法内部可以调用

构造函数和析构函数

  • 构造函数
    PHP5可以在类中使用__construct()定义一个构造函数,构造函数会在对象创建时候调用,常用来对象创建时的初始化工作。
class Car{
    function __construct(){
        ...
    }
}
$car = new Car();//实例化会调用__construct

子类中定义了__construct则不会调用父类的__construct,如果需要调用父类的构造函数,需要使用parent::__construct()显示调用

  • 析构函数
    PHP5中使用_destruct(),定义,析构函数指的是当某个对象的所有引用被删除,或者对象被显示的销毁时会执行的函数。
class Car{
    function __destruct(){
        ...
    }
}
$car = new Car();
unset($car);//销毁时调用析构函数

Static静态关键字

静态属性和方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式调用,静态属性不允许对象使用->操作符调用

class Car {
    static $speed = 10;
}
echo Car::$speed;

静态方法中不允许使用$this伪变量。可以使用selfparent在内部调用静态方法与属性

访问控制

访问控制通过publicprotectedprivate关键字来实现。公有的类成员可以在任何地方被访问,受保护的类成员可以被其自身以及其子类和父类访问,私有的类成员只能被其定义所在的类访问。
类属性必须定义为公有、受保护、私有之一。

calss Car{
    $speed = 10;//错误,属性必须定义访问控制
    public $name;  //定义公有属性
}

类的方法如果没有设置这些关键字,默认公有
如果构造函数定义成了私有方法,则不允许直接实例化对象,可以通过静态方法实例化对象

class Car{
    private function __construct(){
        ...
    }
    private static $_obj = null;
    public static function getInstance(){
        if(empty(self::$_obj))){
            self::$_obj = new Car();
        }
        return self::$_obj;
    }
}
//$car = new Car()//不允许直接实例化
$car = Car::getInstance(); //通过静态方法获得一个实例

对象继承

使用extends实现类的继承,共享属性和方法

class Truck extends Car{
    ...
}
//定义继承于Car的Truck类

PHP对象的重载

重载指的是动态的创建属性和方法。
属性是通过魔术方法来实现。__set__get__isset__unset分别实现对不存在的属性的赋值,读取,判断属性是否设置,销毁属性。

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;

方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载

class Car {
    public $speed = 0;
    
    public function __call($name, $args) {
        if ($name == 'speedUp') {
            $this->speed += 10;
        }
    }
}
$car = new Car();
$car->speedUp(); //调用不存在的方法会使用重载
echo $car->speed;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容

  • 一、数组 1、数组定义 数组就是一个键值对组成的语言结构,键类似于酒店的房间号,值类似于酒店房间里存储的东西。 $...
    空谷悠阅读 809评论 4 11
  • 整型 十进制 八进制(0+0~7) 十六进制(0x) 二进制(0b) is_int() 或 is_integer(...
    简单asdf阅读 217评论 0 0
  • 一、数组 1、数组的声明:$arr = array(); 2、数组的初始化:PHP有两种数组:索引数组、关联数组。...
    yzw12138阅读 1,210评论 2 2
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,238评论 0 4
  • 函数补充 字符串函数 substr截取字符串$string="abcdefg;echo substr($strin...
    likeli阅读 115评论 0 2