php中的类和对象

(1)php中的类
描述:php中类的定义都以关键字 class 开头,后跟类名,再后面跟着一对花括号。
括号内包含有类的属性与方法的定义。
语法:class 类名 { 类内部的结构 }
说明:
a.类名可以是任何非 PHP 保留字的合法标签。一个合法类名以字母或下划线开头,
后面跟着若干字母,数字或下划线。
b.一个类可以包含有属于自己的常量,变量【属性】以及函数【即方法】。
例子:

           class Peo{
                public $peoName = ‘people name’;    //public是一个关键词,稍后再说
                function showSelf(){
                    echo 'hello world!';
                }
           }

(2)php中的对象
描述:要创建一个类的实例,必须使用 new 关键字。类应在被实例化之前定义。
语法:$对象名 = new 类名();
说明:
a.对于创建对象的语句中,new后面的类名后有没有小括号都可以。
b.对象与对象之间的传值仍然是赋值传递,只不过传递的内容是一个内存地址。
例子:

           class Peo{
                public $peoName = ‘people name’;    
                function showSelf(){
                    echo 'hello world!';
                }
           }
           $frank = new Peo;//Peo Object ( [peoName] => people name ) 
           print_r($frank);

(3)php中类的属性与属性类型关键词
描述:类内部的变量成员称为属性,或字段、特征。
语法:由关键字public,protected或者private开头,然后跟一个普通的变量声明来组成。

      class 类名{
            属性关键词 $变量名(属性名) = 属性值;
            属性关键词 function 方法名 (参数1,参数2,…){  方法内容代码;  }
            }

说明:
a.属性中的变量可以初始化,但初始化的值必须是常数。
b.类的属性和方法如果没有写明类型关键词,则都默认是公有
public:被定义为公有的类成员可以在任何地方被访问。
protect:被定义为受保护的类成员则可以被其自身以及其子类和父
类访问。
private:被定义为私有的类成员则只能被其定义所在的类访问。
c.在类的成员方法中,可以用->来访问非静态属性,其中->称为对象
运算符

例子:

class Peo{
    public $peoName = ‘people name’;        //声明公有属性
    private function showSelf(){                //声明私有方法
        echo 'hello world!';
    }
    public function canUsedFunc(){          //声明公有方法
        $this->showSelf();                      //$this是一个伪对象,表示
    }                                           //  当前正在调用这个方法的对象
}

$frank = new Peo();                         //实例化一个Peo类的对象
echo $frank->peoName;                       //通过->访问对象的公有属性

$frank->peoName = ‘Frank’;                  //修改对象的公有属性
echo $frank->peoName;                       

$frank->canUsedFunc();                      //调用对象的公有方法,间接执行私有方法

(5)php中类的构造函数
描述:构造函数是类在实例化对象的时候自动执行,用来帮助类去构造对象的函数。
php为所有的类都提供了一个和类名相同的隐藏构造函数。
可以通过显示编写或通过__construct函数来主动进行编辑。
语法:

           class 类名{
               //function __construct(){  主动修改的代码  }
               function 类名(){  主动修改的代码  }
           }

说明:两种写法都能够实现构造函数的主动编辑,但是需要知道系统自动提供的是第二中结构
例子:

           class Peo{
                public $peoName;
                function __construct(){$this->peoName = '默认值';}
           }
           $frank = new Peo();
           echo $frank->peoName;

(6)php中类的继承
描述:继承有时也被称为类扩展。是指子类会继承父类所有公有的和受保护的属性方法。
在php中使用extends关键词来实现继承。
语法:

function SonClassName extends FatherClassName{
              子类结构
          }

说明:
a.除非子类覆盖了父类的方法,否则被继承的方法都会保留其原有功能。
b.继承对于功能的设计和抽象是非常有用,避免了重复编写大量相同的公有结构
c.对于公有属性和方法的继承,子类可以直接随意使用
对于受保护的属性和方法的继承,可以在【父类或子类内部】使用
对于私有的属性和方法,子类不能够继承。
例子:

zclass Father{
    public $pubPro = '父类公开的属性';
    protected $protecPro = '父类受保护的属性'; 
    private $priPro = '父类私有的属性';
    
    public function fatherPublicPut(){
        echo $this->pubPro."<br/>";
        echo $this->protecPro."<br/>";
        echo $this->priPro."<br/>";}
    protected function fatherProtectPut(){
        echo $this->pubPro."<br/>";
        echo $this->protecPro."<br/>";
        echo $this->priPro."<br/>";}
    private function fatherPrivatePut(){
        echo $this->pubPro."<br/>";
        echo $this->protecPro."<br/>";
        echo $this->priPro."<br/>";
    }
}
class Son extends Father{
    public function SonSelfPut(){
        echo $this->pubPro."<br/>";
        echo $this->protecPro."<br/>";
        echo $this->priPro."<br/>";
    }
}
$father = new Father();
echo $father->pubPro;            //父类公开的属性
echo $father->protecPro;         //报错,受保护属性外部无法直接访问
echo $father->priPro;            //报错,私有属性外部无法访问
$father->fatherPublicPut();      //父类公开的属性、父类受保护属性、父类私有属性
$father->fatherProtectPut();     //报错,受保护方法外部无法直接访问
$father->fatherPrivatePut();     //报错,私有方法外部无法直接访问


$son = new Son();
echo $son->pubPro;                //父类公开的属性(继承来的)
echo $son->protecPro;             //报错,受保护属性外部无法直接访问
echo $son->priPro;                //报错,私有属性外部无法访问
$son->fatherPublicPut();          //父类公开的属性、父类受保护属性、父类私有属性(继承来的)
$son->fatherProtectPut():         //报错,受保护方法外部无法直接访问
$son->fatherPrivatePut();         //报错,私有方法外部无法直接访问


$son->SonSelfPut();               父类公开的属性、父类受保护的属性、报错
                                 (证明继承的属性只有public和protected的属性)


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

推荐阅读更多精彩内容