码迷,mamicode.com
首页 > Web开发 > 详细

PHP面向对象基础

时间:2014-06-09 19:41:52      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:des   c   class   a   color   int   

<?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); 这样式行不通的

PHP面向对象基础,布布扣,bubuko.com

PHP面向对象基础

标签:des   c   class   a   color   int   

原文地址:http://www.cnblogs.com/bin-pureLife/p/3777178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!