1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Ren{ public static $uname = "Miki"; public function __construct(){ echo "construct on"; }
public function walk(){ $uname = "def"; echo $this::$uname." walk fast"; } }
$ren = new Ren(); echo '<br>'; echo $ren->walk();
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class Mysql {
public $link=null;
function __construct(){ $cfg = array( "host" => "localhost", "user" => "root", "password" => "", "db" => "test", "charset" => "utf8" ); return $this->link = mysqli_connect($cfg['host'],$cfg['user'],$cfg['password'],$cfg['db']); }
public function query($sql){ return mysqli_query($this->link,$sql); }
public function getAll($sql){ $res = $this->query($sql); while($row = mysqli_fetch_assoc($res) ){ $data[] = $row; } return $data; } }
$db = new Mysql(); var_dump($db->query("desc test"));
|
封装性
封装 : 即禁止某些方法/属性 , 不充许外部调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class ATM { protected function getPass(){ echo "123456"; }
public function checkPass(){ return $this->getPass(); } }
$user = new ATM(); $user->checkPass(); $user->getPass();
|
这个例子,如果用面向过程的函数来开发,则很难对getPass()做屏蔽
继承性
单继承的:子类只能继承一个父类,demo如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Father{ function money(){ echo "I have 10 yuan"; } }
class Son extends Father { function money(){ echo "I have 5 yuan"; } }
$f = new Father(); $f->money();
echo "<hr>"; $s = new Son(); $s->money();
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| final class Stu{ public function think(){ echo "This class can't be extends"; } }
class Stu1{ final public function demo(){ echo "Final function can not be rewrited"; } }
class Stud2 extends Stu1{ public function demo1(){ echo "Rewrite demo"; } }
$stu = new Stud2(); echo $stu->demo1();
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
<?php
class Human{ public $name = "Json"; protected $car = "BMW"; private $gf = "Connie";
public function sub() { echo $this->name."<br/>"; echo $this->car."<br/>"; echo $this->gf."<br/>"; }
}
class Stu extends Human{
public function par() { echo $this->name."<br/>"; echo $this->car."<br/>"; echo $this->gf."<br/>"; } }
$stu = new Stu(); $stu->sub(); $stu->par(); echo $stu->name; echo $stu->car; echo $stu->gf;
|
地址 |
Public |
Protected |
Privated |
外部 |
Y |
N |
N |
子类 |
Y |
Y |
N |
本子类 |
Y |
Y |
Y |
总结
- public: 到处都能用
- protected: 本类或者子类只要通过方法都能用
- private: 只有通过本类的方法才能调用.(可继承)