php控制器面向对象编程,php面向对象编程
u成員屬性的說明
1.成員屬性是從某個(gè)事物提取出的,它可以是 基本數(shù)據(jù)類型(整數(shù)、小數(shù)、字符、布爾),也可以是復(fù)合數(shù)據(jù)類型(數(shù)組、對象)
class Cat{
public $name;
public $age;
}
//創(chuàng)建對象
$cat1=new Cat;
$cat1=new Cat();
?>
2.怎樣訪問一個(gè)成員屬性(其它成員屬性是public)
基本語法是
$對象名->屬性名;
? 如果一個(gè)文件,專門用于定義類,則命名規(guī)范應(yīng)當(dāng)這樣
類名.class.php
//定義一個(gè)人類
class Person{
public $name;
public $age;
}
$a=new Person();
$a->name="小明";
$a->age=20;
//把a(bǔ)變量(對象),賦給$b
$b=$a;
echo $a->name."
";
echo $b->name."
";
再次說明:
$a=78;
//$b=$a;
$b=&$a;
$b=$b+8;
echo $a."||".$b;
u如果給一個(gè)函數(shù)傳遞一個(gè)對象,實(shí)際上是傳遞的一個(gè)地址.
//看下面的一段代碼:
class Person{
public $name;
public $age;
}
$p1=new Person();
$p1->name="韓順平";
$p1->age=33;
//函數(shù)接收對象時(shí)候,究竟是傳入值,還是地址(!!!!)
function test1($p){
$p->name="小明";
}
test1($p1);
echo $p1->name;
分析圖
u如果給函數(shù)傳遞的是基本數(shù)據(jù)類型(整數(shù)、小數(shù)、布爾、字符) ,究竟傳遞的是什么?
結(jié)論:在默認(rèn)的情況下是傳遞的值,如果你希望傳入地址
function test(&$變量....){
}
在php中如果,給一個(gè)函數(shù)傳遞的是數(shù)組,則默認(rèn)情況下是傳值(拷貝了新的數(shù)組),如果希望傳入地址,則應(yīng)當(dāng),&$數(shù)組名
學(xué)生問題?
$a1=array(1,3,900);$a2=array(56,90,100);
$arr=array($a1,$a2);
foreach($arr?as?$k=>$v){??????????????echo?“$k=$v”;}
?>
u成員方法的講解
函數(shù)和成員方法關(guān)系:
當(dāng)我們把一個(gè)函數(shù)寫到某個(gè)類中,則該函數(shù)可以稱成員方法:
我們有這樣一個(gè)需求;希望人可以說話,做算術(shù)題.......,這樣就需要使用到成員方法:
①添加speak成員方法,輸出我是一個(gè)好人
②添加jisuan成員方法,可以計(jì)算從1+..+1000的結(jié)果
③修改jisuan成員方法,該方法可以接收一個(gè)數(shù)n,計(jì)算1+..+n的結(jié)果
④添加add成員方法,可以計(jì)算兩個(gè)數(shù)的和
成員方法的基本語法:
訪問修飾符號function函數(shù)名(參數(shù)列表){
//函數(shù)體
//return語句;
}
class?Person{
public?$name;
public?$age;
public?function?speak(){
echo?"我是一個(gè)好人!";
}
public?function?count1(){
$res=0;
for($i=1;$i<=1000;$i++){
$res+=$i;
}
//return?究竟到什么地方去?誰調(diào)用,就返回給誰
return?$res;
}
//修改jisuan?成員方法,該方法可以接收一個(gè)數(shù)n,計(jì)算?1+..+n?的結(jié)果???????????????public?function?count2($n){
$res=0;
for($i=0;$i<=$n;$i++){
$res+=$i;
}
return?$res;
}
//添加add?成員方法,可以計(jì)算兩個(gè)數(shù)的和
public?function?add($num1,$num2){
return?$num1+$num2;
}
}
//如何使用函數(shù)
//1.創(chuàng)建一個(gè)人
$p1=new Person();
//通過對象去訪問,調(diào)用成員方法.
//這里強(qiáng)調(diào),調(diào)用成員方法和調(diào)用普通函數(shù)的機(jī)制,仍然不變
$p1->speak();
//讓這個(gè)人做算術(shù)題
$res=$p1->count1();
echo '計(jì)算結(jié)果是='.$res;
//讓這個(gè)人可以接收一個(gè)數(shù),然后計(jì)算
echo "計(jì)算結(jié)果是=".$p1->count2(100);
echo "計(jì)算結(jié)果是=".$p1->count2(100);
echo "計(jì)算結(jié)果是=".$p1->count2(100);
echo "23+89=".$p1->add(23,89);
?>
u成員方法的細(xì)節(jié)
我們在實(shí)際開發(fā),其實(shí)通常是這樣來使用類
Person.class.php
class Person{
//成員屬性
public $name;
public $age;
//成員方法
public function speak(){
echo "我是一個(gè)好人!";
}
public function count1(){
$res=0;
for($i=1;$i<=1000;$i++){
$res+=$i;
}
//return究竟到什么地方去?誰調(diào)用,就返回給誰
return $res;
}
//修改jisuan成員方法,該方法可以接收一個(gè)數(shù)n,計(jì)算1+..+n的結(jié)果
public function count2($n){
$res=0;
for($i=0;$i<=$n;$i++){
$res+=$i;
}
return $res;
}
//添加add成員方法,可以計(jì)算兩個(gè)數(shù)的和
public function add($num1,$num2){
return $num1+$num2;
}
//添加一個(gè)新的方法,可以判斷三個(gè)數(shù)最大的數(shù)
public function findMax($arr){
//這里仍然可以寫算法
//從$arr數(shù)組中,找到最大的數(shù).
//1.假設(shè)數(shù)組的第一個(gè)數(shù)就是最大的數(shù)
$maxVal=$arr[0];
//2.最大數(shù)的下標(biāo)是
$maxIndex=0;
//開始循環(huán)的比較
for($i=1;$i
//這個(gè)條件說明,maxVal不是最大
if($maxVal
//調(diào)整
$maxVal=$arr[$i];
$maxIndex=$i;
}
}
return $maxVal;
}
}
?>
Exercise01.php
//引入類文件
require_once ‘Person.class.php’;
//創(chuàng)建對象
$p1=new Person();
//調(diào)用$p1的各個(gè)方法
$p1->speack();
$p1->count1();..
?>
?
案例:
編寫一個(gè)函數(shù)(以面向?qū)ο蟮姆绞介_發(fā)),從網(wǎng)頁輸入一個(gè)整數(shù)打印出對應(yīng)的金子塔:
當(dāng)我們學(xué)習(xí)完成員方法后,我們的類定義就完善一步了:
1.設(shè)計(jì)計(jì)算機(jī)類,要求如下:
屬性:品牌,顏色,cpu型號,內(nèi)存容量,硬盤大小,價(jià)格,工作狀態(tài)
方法:打開,關(guān)閉,休眠(表示)
創(chuàng)建一個(gè)計(jì)算機(jī)對象,調(diào)用打開,關(guān)閉方法.
總結(jié)
以上是生活随笔為你收集整理的php控制器面向对象编程,php面向对象编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab中cq是什么,Matlab中
- 下一篇: php电商交押金的逻辑,PHP高并发下抢