11.7学习笔记

oop:面向对象的思想 (封装 继承 多态)

1: extends 继承 (单继承)

2:final :最终

3: 3个访问修饰符
public 公共的 所有地方都可以访问
protected 类的内部 和子类中可以访问
private  类的内部访问

4:static :静态的 类名::静态方法 (把属性静态化,那么方法也要做一个静态化)
   调用静态属性 self::属性名

5:const :定义常量 类里面调用常量 self::常量名                             define():定义常量


6:__clone : 克隆

克隆一个对象
//要这个克隆方法
public function __clone()
{

}

克隆实例的对象


7:值传递与引用传递
//值传递 引用传递 & 借用 引用
例子:
class S{
public static function show(&$a)
{
$a+=2;

}


}
$a=2;
S::show($a);
echo ($a);

值传递:当两个变量(整型,字符串等)相互赋值时,在内存会复制原变量的内存,另起一块内存

引用传递:通常发生在两个对象相互赋值时。两个变量会同时指向同一块内存


__FILE__     魔术方法   __get()

__isset() //__isset(‘属性名’),当对1个不存在的属性使用isset时调用

isset() // 判断是否有值

__unset() //__unset(‘属性名’),对1个不存在的属性使用unset时调用
public $name
$this->name
$this->cc
__unset(cc);
unset() //清空变量的值 (一般用于清除session)☆

empty() // 判断是否值是否为空

__autoload() //自动加载

定义 : __ autoload(‘类名’),当实例化失败时触发,通常用于自动加载

作用:避免加载过多的没用的类库,可以确保在调用时才加载


8:抽象方法 抽象类 (abstract : 抽象  抽象方法abstract来修饰,或者抽象类abstract来修饰 )

(1):抽象方法是指在类里面定义的没有方法体的方法,所谓的没有方法体指的是,在方法声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时还要加一个关键字“abstract”来修饰;
(2):在类中定义了抽象方法,那么这个类一定也要定义为抽象类(abstract)
abstract class C
{}

(3):类中定义了抽象方法,那么在子类中一定要去实现
         类中定义抽象方法不需要括号直接用分号结束.
(4):可以定义多个抽象方法,但是在子类中一定要去实现定义的抽象方法.

(5):规范系统中每个子类某些方法的命名规范。通常用于团队开发中。主要意义在于便于维护或后续工作人员理解代码

(6):抽象类不可以实例化

(7):在抽象类中可以存在完全方法,而且子类不一定要实现

(8):抽象方法不能是私有的,因为私有方法不能被重载(重写,覆盖)



9:Instanceof :判断变量是否是某个对象实例 (变量 Instanceof 实例对象)
例子:
<?php
class A
{
}
class B{
}
class C extends A{
}

$a = new A();
$b = new B();
$c = new C();
if($a Instanceof b)
{
echo ("y");

}else
{
echo ("n");
}
?>

10:interface :接口 xml

声明一个接口
interface 名字

(1):接口不能用来继承实现

(2):接口名字 (要遵守命名规则) 接口不用关键字class去声明

(3):实现接口:接口实现implements

(4):定义了接口类 不能被实例化

(5):定义接口类里面方法 ,那要用 implements去实现接口

(6):定义了接口类里面的方法,一定要去实现接口里面的方法

(7):可以定义多个接口,且一定要去实现接口,实现多个接口用逗号隔开 class C implements A,B

(8):一个interface只能定义一个接口,定义多个接口用 多个interface定义.
例子;

<?php
/*class Man
{
public function show()
{
echo ("adsf");
}

}
$m = new Man();
$m->show();*/

interface A
{
//定义方法
public function show();
}

class C implements A
{
public function show(){

echo ("asd");

}

}
$c = new C();
$c->show();


?>

11:串行化: serialize(),把对象转化为二进制的字符串
    反串行化: unserialize(),把对象转化的二进制字符串再转化为对象
例子;

<?php
class Stu{
public $name;
public function Stu($name)
{
$this->name = $name;
}
public function show()
{
echo ($this->name);
}
}
$s = new Stu("武大郎");
$s->show();
//O:3:"Stu":1:{s:4:"name";s:6:"武大郎";}
$sd = serialize($s);//转换成二进制的字符串
echo ($sd);
$b = unserialize($sd);
$b->show();
?>

12:单例模式

设计模式(Design pattern):是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,是一种在编程过程中发现的习惯性用法 .

使用设计模式可以更快开发出健壮的 程序。能够有效的提高代码的可重用性、让代码更容易被他人理解、保证代码的可靠性,代码更好的维护.


1:单件模式(Singleton) 单例模式 (一个类只能让他实例一次) (通常会用在数据库实例)

例子1:

<?php
//模拟一个数据库表连接

class Mysqldb{
public $dbname;
//申明一个静态私有的属性来进行保存有没有实例对象,默认没有进行实例。
private static $dbin = NULL;
private function Mysqldb($dbname)
{
$this->dbname = $dbname;
}
//申明一个方法进行单例模式
public static function dbinster()
{
if(self::$dbin == NULL)
{
self::$dbin = new self("bbscms");
}
return self::$dbin;

}
//防止外部克隆
private function __clone()
{
}
public function dbselect()
{
echo($this->dbname);
}
}

/* $m = new Mysqldb("bbscms");
$m->dbselect();*/
/*$m = new Mysqldb("bbscms");
$m->dbselect();
$m = new Mysqldb("bbscms");
$m->dbselect();*/

$a = Mysqldb::dbinster();
$a->dbselect();
/*$b = clone($a);
$b->dbselect();
*/
/*$a = Mysqldb::dbinster();
$a->dbselect();
$a = Mysqldb::dbinster();
$a->dbselect();*/

?>


例子2:

<?php
//连接数据库做个单例模式
class Dbmysql{
private static $link = NULL;//连接数据库,默认没有连接
private function Dbmysql()
{
//操作连接数据库
self::$link = mysqli_connect("127.0.0.1","root","root")or die("连接失败");
mysqli_select_db(self::$link,"bbscms");//选择操作的数据库
mysqli_set_charset(self::$link,"utf8");
}
//防止外部克隆
private function __clone()
{
}

public static function select()
{
//从数据库里面查询数据
$sql = "select * from news";
$res = mysqli_query(self::$link,$sql);
$row = mysqli_fetch_assoc($res);
return $row;
}

public static function get(){
$a = new Dbmysql();
return $a;


}


}
//$d = new Dbmysql();
//$d = new Dbmysql();
$b = Dbmysql::get();
$n = $b->select();
print_r($n);


?>


14:名称空间(命名空间) 5.4版本以上 (防止取取相同的类名或者方法名)

namespace :名称空间

声明名称空间必须在类的上面去声明
namespace 名字\名字1

use App\Stu; //use 引入名称空间下的类

thinkphp 框架 会使用

猜你喜欢

转载自www.cnblogs.com/xieyankeai/p/9925066.html