面向对象:类的概念,对象的创建
/**
燕十八 公益PHP培训
课堂地址:YY频道88354001
学习社区:www.zixue.it
**/
<?php
/*
从地址栏接收 gender参数,男/女
模拟商场迎宾的行为:
如顾客为男: 则招呼 "先生好";
如顾客为女: 则招呼 "女士好";
用地址栏的参数来模拟顾客的性别.
*/
$g = $_GET['gender'];
if($g == '男') {
echo '先生好';
} else if($g == '女') {
echo '女士好';
} else {
echo '妖猴!';
}
/*
这个程序,
对于可能性的判断,都被我们详细的讨论到,
并为每一种可能准备的相应的操作.
*/
?>
/**
燕十八 公益PHP培训
课堂地址:YY频道88354001
学习社区:www.zixue.it
**/
<?php
/*
张三
张三的智商
张三打招呼
车
车撞人
以往我们分析:
收到什么数据
做什么判断
各自再怎么处理....
我们把张三看成一个对象
张三有智商---> 属性[名字]
张三能打招呼 --->功能/方法[动词]
车也是一个对象
车能撞人 ---> 功能/方法[动词]
*/
class Man {
public $iq = 100;
public function say() {
$arr = array('早上好','晚上好','尼妹呀');
if($this->iq >= 100) {
echo $arr[0];
} else {
$i = rand(0,2);
echo $arr[$i];
}
}
}
class Car {
public function hit($people) {
$newiq = rand(50,110);
$people->iq = $newiq;
}
}
$lisi = new Man();
$QQ = new Car();
$lisi->say();
echo '<br />';
// 撞击
$QQ->hit($lisi);
echo $lisi->iq,'<br />';
$lisi->say();
echo '<br />';
$lisi->say();
echo '<br />';
$lisi->say();
echo '<br />';
/****
这一道题的目的---是让大家换个思维,换个面向对象的思维来看待问题.
至此里面的语法,你不懂,没关系.
****/
?>
/**
燕十八 公益PHP培训
课堂地址:YY频道88354001
学习社区:www.zixue.it
**/
<?php
/**
人类
声明语法:
class 类名 {
}
这个类,没有属性,也没有方法
**/
class People {
// public 的含义先别管
public $name = 'nobody';
public $height = 30;
public function cry() {
echo '呱呱坠地';
}
}
/****
有了类,就可以产生对象了.
如何类来产生对象?
new 类名(); 这个语句返回对象
返回的对象 赋给一个变量
****/
$a = new People();
print_r($a);
/***
这个a是什么 ,a对象
就是一个箱子,里面装了N多属性和属性值
$a = {name:nobody,height:30}
可以看出 $a是一个复合数据,
我们要想访问$a的名字,即$a里面 name的值,
我们可以怎么访问呢?
答:肯定是得通过$a来访问了.
$a->属性名,就可访问该属性的值
***/
echo $a->name,'<br />',$a->height,'<br />';
$b = array('name'=>'nobodyB','height'=>'40B');
echo $b['name'],'<br />',$b['height'];
echo '<br />';
// ==== 对象调用其方法====//
$a->cry();
/**
燕十八 公益PHP培训
课堂地址:YY频道88354001
学习社区:www.zixue.it
**/
<?php
// 声明类的时候,注意点.
/*
1:关于属性值,可以声明属性并赋值,也可以声明属性先不赋值
如果不赋值,则属性的初始值是NULL
2: 关于PHP中的类,请注意,属性必须是一个"直接的值"
是8种类型任意的"值".
不能是: 表达式 1+2 的值
不能是: 函数的返回值 time();
这点和java不一样.
*/
class Human {
// public $age = time(); // 错误
// public $age = 1+2; // 错误
}
$a = new Human();
echo $a->age,'<br />';
class People {
public $age;
}
$b = new People();
var_dump($b->age);
echo '<br />';
?>
/**
燕十八 公益PHP培训
课堂地址:YY频道88354001
学习社区:www.zixue.it
**/
<?php
// 方法的注意点
function t() {
echo 't';
}
// 这个t是我的自定义函数
t();
// 我再定义一个t函数
/*
Fatal error: Cannot redeclare t() (previously declared in D:\www\1105\05.php:5) in D:\www\1105\05.php on line 16
function t() {
echo 'tt';
}
PHP中函数不能重复定义
这点和js不一样
*/
/**
time是系统函数,因此你也不能再次定义
function time() {
}
**/
/***
但是,类中的方法,可以理解"包在类范围内的函数"
和全局的函数不是一回事,
因此,可以重名
***/
class clock {
public function time() {
echo '现在的时间戳是aaaa';
}
public function t() {
return '内部的t';
}
public function time2() {
echo '现在的真正时间戳是',time(),'<br />'; // 注意此处调用的是系统的time()函数
echo $this->t(); // 注意,此处调用的是自身的t函数;
}
}
$c = new clock();
$c->time();
echo '<br />';
$c->time2();
浙公网安备 33010602011771号