<?php
    //PHP oop学习
class Person{
	
	public 
$name;
	public $age;
	public $height;
	
	function 
getInstance($name,$age,$height){
		$obj_person = new 
Person();
		$obj_person->name = $name;
		$obj_person->age = 
$age;
		$obj_person->height = $height;
		return 
$obj_person;
	}
}	
$obj_person = new Person();
$class_data = $obj_person->getInstance("陈彬", 100, 171);
var_dump($class_data);
?>
PHP 类名规范 一般为类名.class.php
Person.class.php
内存分析:
堆内存:放对象的东西
栈内存:放基本数据类型(若是基本数据类型属于某个对象,那么应该也放在堆内存)
函数开启,开辟新栈内存 函数调用完毕 立即回收内存
静态内存:静态
常量内存:常量
代码内存:代码指令
---------------------------
===========================
---------------------------
 
//关于内存的划分,堆内存,栈内存,常量内存,静态数据内存,代码内存
// question :调用函数传入对象 和基本数据类型 
传入的到底是内存地址,还是值
	$obj = new Person();
	function for_obj($obj){
		$obj->name = 
"chenbin";
	}
	for_obj($obj);
	var_dump($obj);
	
	//当传入对象的时候,传入的是对象的内存地址,所以我们通过地址找到空间,对值做修改。
	//所以传对象 
实际传的是对象的内存地址
	$bin_a = 1;
	
	
	function 
for_comm($bin_a){
		$bin_a = 
3;
		print_r("===");
	}
	for_comm($bin_a);
	var_dump($bin_a);
	//当传入的基础数据类型 
实际上传入的是值,因为我们无法找到空间,对值进行修改。
	
	$arr_a = array(1,2,3,4);
	function 
for_arr(&$arr_a){
		$arr_a[3] = 100;
	}
	function 
for_arr_1($arr_a){
		$arr_a[3] = 100;
	}
	for_arr_1($arr_a); 
	var_dump($arr_a);
	
	for_arr($arr_a);
	var_dump($arr_a);
	
	//数组传参数,默认情况下是传的值而不是地址
	
	
	//注意
*/
//在类中,函数中若要引用函数外部的变量,需要用$this->xx 
 而不能直接用$变量名称 
class Pig{
	public $weight;
	
	function 
weightAdd($num){
		//$weight = $weight+$num; 
		$this->weight = 
$this->weight+$num; 
	}
}
	
$pig = new 
Pig();
$pig->weightAdd(4);
var_dump($pig->weight);
?>
====================================
------------------------------------
====================================
PHP构造方法
class Mobile{
	
	public  function __construct(){
		echo 
$this->color;
	}
	//这说明构造函数是对象创建后才调用的
	public $color = 
"black";
	
	
	//PHP5 以下是这么的写法
	public function Mobile(){
		echo 
$this->color;
		echo "-----";
	}
}
$mobile = new Mobile();
 
PHP析构函数
definition:在某个对象的所有引用都被删除或者对象被显式销毁的时候执行
主要用来释放资源 比如关闭数据库链接
析构函数调用的顺序先创建的对象 后被销毁
栈 是先进后出
析构函数被调用的时候:
A 当程序退出时
B 当对象成为垃圾对象的时候,该对象立刻调用该对象的析构函数
//php 析构函数
class ball{
	public $name;
	public function 
__construct($name){
		$this->name = $name;
	}
	public function 
__destruct(){
		echo $this->name."删除中\n";
	}		
}
$c1 = new ball("111");
$c1 = null;//A 当程序退出时 B 
当对象成为垃圾对象的时候,该对象立刻调用析构函数
$c2 = new ball("222");
$c3 = new ball("333");
//析构函数执行的顺序 倒过来了和new处对象的引用存在栈内存中有关系,因为栈是先入后出
//PHP 静态变量
 */
//静态变量在类中用self::变量名 
用$this->变量名不行,因为静态变量是属于类的而不是对象,所以用this当前对象去调用这是不合适的
/* class 
Cat{
	
	public	static  $a = 0;
	
	public function 
__construct($num){
		self::$a += $num; 
	}
}
$a_1 = new 
Cat(12);
$a_2 = new Cat(12);
var_dump($a_2::$a); */
PHP静态方法
//静态方法
 
class Static_study{
	public $a = 4;
	public 
static $b = 5;
	private static $c = 6;
	protected static $d = 
7;
	
	public static function test(){
		//echo $this->a; 
//静态方法中不能引用非静态成员变量
echo self::$b."\r";
	} 
	
	public function 
__construct(){
		Static_study::test();
		self::test();
		//self:: 
能获得类内部任何修饰符的变量
//Static_study::能获得类内部任何修饰符的变量
	}
}
$study_study = new Static_study();
$study_study->test(); 
$study_study::test();
Static_study::test();
//$study_study->无法获取private 
和 protected 的静态变量和数据
//$study_study::无法获取private 和 protected 
的静态变量和数据
//Static_study:: 无法获取private 和 protected 
的静态变量和数据
//类外部调用类内部静态变量和静态函数 都可用上面三种方式
//var_dump($this->$a); 这样式行不通的
原文地址:http://www.cnblogs.com/bin-pureLife/p/3777178.html