當前位置:首頁 » 編程語言 » 類與對象php

類與對象php

發布時間: 2022-04-22 10:17:55

php中類與對象的區別和關系是什麼

舉個例,類就好比人類,類有各種屬性和各種方法,就像人類有姓名,年齡,身高,體重等屬性,也有吃飯,睡覺,走路等行為(方法)。而對象,就是具體的一個人,是從人類這個類里實例化出來的一個對象,這個人具有人類的各種屬性和方法。如果把上面這對話寫成代碼的話,就是

class 人類{
public $姓名, $年齡, $身高, $體重……
public function 吃飯(){
……
}
public function 睡覺(){
……
}
public function 走路(){
……
}
……
}
$人=new 人類;

$人->姓名='李雷';
$人->年齡=30;
$人->身高=175;
$人->姓名=75;
$人->吃飯();
……
這就是類和對象的區別和關系。

㈡ PHP 中的 對象 類 屬性 實例化 到底是怎麼理解的啊·

我的理解
說一個人養了一隻小狗(定義一個對象),把狗牽過來,擺在面前,讓它確實存在(實例化)。
類,就是類別。人是一類,狗是一類。
屬性就是人的特點,長頭發、白皮膚、黑眼珠。
方法就是人會唱歌、會說話、會跑步跳躍等各種行為。
對象,就是類裡面的一個個體。人類中的每一個人都是一個對象

㈢ PHP運用類和對象實現斐波那契數列

<?php
class demo {
private $_current = 0;
private $_next = 1;
protected function _getNext() {
$value = $this->_current + $this->_next;
$this->_current = $this->_next;
$this->_next = $value;
return $value;
}
public function getString($max) {
if($max < 1) return ''
$str = ''
while($next = $this->_getNext()) {
if ($next <= $max) {
$str .= ', ' . $next;
} else {
break;
}
}
return substr($str, 1);
}
}

不過這東西需要用對象這么麻煩嗎...如果是老師教的...這水平...完全沒有實用價值

㈣ php 類的寫法有點不明白,對於php面向對象還是不太理解

query方法里邊,因為你給的不全,沒法判斷是你寫的究竟是什麼$re沒在上文中出現這個變數,只有一個$rs,不知道是不是這個?
PHP類,成員有屬性和方法,需要加訪問修飾限定符如 public private protected等,如:
class person{
private $name;
public function say(){
echo 'hello';
}
}
訪問對象屬性石必須先對象再屬性,
常量,和靜態成員就用類名屬性,或者方法名訪問

這是個操作資料庫的類,

定義方法肯定是寫在類里邊的,並且需要加訪問修飾限定符,定義方法就跟普通函數一樣,給你個參照吧:

/**
* mysql資料庫操作類
*/
class MySQLDB {
//保存單例屬性
private static $instance;
//操作資料庫所需要的必要信息
private $_host;//主機地址
private $_port;//埠
private $_user;//用戶名
private $_pass;//密碼
private $_charset;//默認字元集
private $_dbname;//默認資料庫
private $_prefix;//表前綴
private $_link;//連接標識保存屬性
/**
* 構造方法
* @param $params array 構造時,需要的信息列表 $params = array('host'=>'xxx', 'post'=>'xxx', 'user'=>....);
*
*/
private function __construct($params=array()) {
//通過實例化對象時,傳遞的參數,初始化屬性。
//同時判斷,增加默認值
$this->_host = isset($params['host'])?$params['host']:'127.0.0.1';
$this->_port = isset($params['port'])?$params['port']:'3306';
$this->_user = isset($params['user'])?$params['user']:'root';
$this->_pass = isset($params['pass'])?$params['pass']:'';
$this->_charset = isset($params['charset'])?$params['charset']:'utf8';
$this->_dbname = isset($params['dbname'])?$params['dbname']:'';
$this->_prefix = isset($params['prefix'])?$params['prefix']:'';
//連接伺服器
$this->_connect();
//設置編碼
$this->_setCharset();
//選擇資料庫
$this->_selectDb();
}
/**
* 單例所需的私有克隆方法
*/
private function __clone() {
}
/**
* 用於獲得該類對象的靜態方法
*
* @param $params array 構造該對象時 所使用的參數數組
*
* @return 該類的單例
*/
public static function getInstance($params) {
if(!(self::$instance instanceof self)) {
self::$instance = new self($params);
}
return self::$instance;
}

/**
* 連接資料庫
*
* @access private
*/
private function _connect() {
if($link = mysql_connect("{$this->_host}:{$this->_port}", $this->_user, $this->_pass)) {
//連接成功
$this->_link = $link;
} else {
//連接失敗
exit('-_-!連接失敗');
}
}
/**
* 在該類的對象,被反序列化時,對相應的資源進行重新初始化
*/
public function __wakeup() {
//連接伺服器
$this->_connect();
//設置編碼
$this->_setCharset();
//選擇資料庫
$this->_selectDb();
}
/**
* 在該類的對象,被序列化時,設置哪些屬性應該序列化
*/
public function __sleep() {
return array('_host', '_port', '_user', '_pass', '_dbname', '_charset', '_prefix');
}
/**
* 設置字元集
*
* @access private
*/
private function _setCharset() {
// if(!mysql_query("set names {$this->_charset}")) {
// exit(mysql_error());
// }
$this->_query("set names {$this->_charset}");
}
/**
* 選默認資料庫
*/
private function _selectDb() {
if($this->_dbname != '') {
$this->_query("use {$this->_dbname}");
}
}
/**
* 執行sql
*
* @access private
*
* @param $query string 待執行的sql語句
*
* @return mixed 如執行的查詢類,返回結果集,非查詢類的布爾值
*/
public function _query($query) {
//執行,判斷執行結果,返回執行結果。如果有錯誤,提供錯誤信息
if($result = mysql_query($query, $this->_link)) {
return $result;//返回結果即可
} else {
//執行失敗
echo '-_-好像失敗了!<br>';
echo '出錯的語句是:', $query, '<br>';
echo '錯誤的信息是:', mysql_error($this->_link), '<br>';
echo '錯誤的代碼是:', mysql_errno($this->_link), '<br>';
die;//腳本就不走了
}
}

/**
* (標題)獲得符合sql,的全部數據,適合用於執行查詢類方法,select,show,desc(describe)
*
* (詳細信息)通過得到一條查詢類語句,返回所有的查詢結果,方法內,需要實現,執行,獲得結果集,在結果集內取得所有數據
*
* @access public
*
* @param $query_str string 需要執行的查詢類字元串
*
* @return array 二維數組,每一個一維元素代表一條記錄,每一個二維的元素,表示一個記錄的欄位
*/
public function getAll($query_str) {
if($result = $this->_query($query_str)) {
//成功
$rows = array();//初始化,防止一條記錄都沒有。
while($row = mysql_fetch_assoc($result)) {
$rows[] = $row;
}
return $rows;
} else {
//失敗
return false;
}
}
/**
* 獲得符合sql,的第一條記錄,適合用於執行查詢類方法,select,show,desc(describe)
*
* (詳細信息)通過得到一條查詢類語句,返回第一條查詢結果,方法內,需要實現,執行,獲得結果集,在結果集內取得第一條數據
*
* @access public
*
* @param $query_str string 需要執行的查詢類字元串
*
* @return array 一維數組,每個元素,表示一個記錄的欄位
*/
public function getRow($query_str) {
if($result = $this->_query($query_str)) {
//成功
$row = mysql_fetch_assoc($result);
return $row;
} else {
//失敗
return false;
}
}

/**
* 獲得符合sql,的第一條記錄的第一個欄位,適合用於執行查詢類方法,select,show,desc(describe)
*
* (詳細信息)通過得到一條查詢類語句,返回第一條查詢結果的第一個欄位,方法內,需要實現,執行,獲得結果集,在結果集內取得第一條數據的第一個欄位
*
* @access public
*
* @param $query_str string 需要執行的查詢類字元串
*
* @return string 表示一個記錄的第一個欄位的值
*/
public function getOne($query_str) {
if($result = $this->_query($query_str)) {
//成功
$row = mysql_fetch_row($result);//最好使用索引數組
return $row[0];
} else {
//失敗
return false;
}
}
/**
* 獲取最新插入的自動增長ID
*/
public function last_insert_id() {
return mysql_insert_id($this->_link);
}
/**
* 取得影響的行數
*/
public function affected_rows() {
return mysql_affected_rows();
}

}

㈤ PHP真的能算是面向對象的語言嗎

面向對象三大特性:封裝,繼承,多態
php可以封裝對象,也可以繼承,同樣可以實現多態
多態是指指出重寫和重載,php子類可以重寫父類的方法,也可以通過方法的參數數量不同來重載方法,我覺得是面向對象語言

㈥ PHP語言的有哪些優勢和特點

優勢和特點:

1、執行速度快:PHP是一種強大的CGI腳本語言,語法混合了C、Java、Perl和PHP式的新語法,執行網頁比CGI、Perl和ASP更快,這是它的第一個突出的特點。

2、具有很好的開放性和可擴展性:PHP屬於自由軟體,其源代碼完全公開,任何程序員為PHP擴展附加功能非常容易。

3、資料庫支持:PHP支持多種主流與非主流的資料庫,如:、Adabas D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、MySQL、Microsoft SQL Server、Solid、Sybase、ODBC、oracle、oracle 8、PostgreSQL等。其中,PHP與MySQL是現在絕佳的組合,它們的組合可以跨平台運行。

4、面向對象編程:PHP提供了類和對象。為了實現面向對象編程,PHP4及更高版本提供了新的功能和特性,包括對象重載、引用技術等。

5、版本更新速度快:與數年才更新一次的ASP相比,PHP的更新速度就要快得多,因為PHP每幾周就更新一次。

6、具有豐富的功能:從對象式的設計、結構化的特性、資料庫的處理、網路介面應用、安全編碼機制等,PHP幾乎涵蓋了所有網站的一切功能。

7、可伸縮性:傳統上網頁的交互作用是通過CGI來實現的。CGI程序的伸縮性不很理想,因為它為每一個正在運行的CGI程序開一個獨立進程。

8、功能全面:php包括圖形處理、編碼與解碼、壓縮文件處理、xml解析、支持http的身份認證、cookie、 pop3 、snmp等。

(6)類與對象php擴展閱讀:

PHP的發展現狀:

PHP技術核心和相關的人才需求,正符合互聯網的發展趨勢。網站開發、API介面開發,伺服器端開發,移動端後台開發,內部OA系統開發,游戲開發等均用到PHP語言。

在IT行業和互聯網的飛速發展的時代,企業對PHP開發人員的需求也大幅增加,目前在國內專業的互聯網招聘網站,好多知名公司發布招聘PHP崗位,其中包括網易、京東、聯想、阿里巴巴、滴滴打車、美團、大眾點評、易到用車、網路、新浪、搜狐、奇虎、騰訊等。


㈦ php中的類有什麼用和自定義函數有什麼區別

請看PHP手冊18章,裡面的內容你看了就明白。

第18章類與對象(PHP4)
目錄

繼承
構造函數
范圍解析操作符(::)
parent
序列化對象-會話中的對象
魔術函數__sleep和__wakeup
構造函數中的引用
對象的比較



類是變數與作用於這些變數的函數的集合。使用下面的語法定義一個類:

<?php
classCart{
var$items;//購物車中的物品

//將$num個$artnr物品加入購物車

functionadd_item($artnr,$num){
$this->items[$artnr]+=$num;
}

//將$num個$artnr物品從購物車中取出

functionremove_item($artnr,$num){
if($this->items[$artnr]>$num){
$this->items[$artnr]-=$num;
returntrue;
}elseif($this->items[$artnr]==$num){
unset($this->items[$artnr]);
returntrue;
}else{
returnfalse;
}
}
}
?>

上面的例子定義了一個Cart類,這個類由購物車中的商品構成的數組和兩個用於從購物車中添加和刪除商品的函數組成。

警告
不能將一個類的定義分割到多個文件中。也不能將一個類的定義分割到多個PHP塊中,除非該分割是在一個方法聲明內部。以下用法將不起作用:

<?php
classtest{
?>
<?php
functiontest(){
print'OK';
}
}
?>

但是以下用法是可以的:

<?php
classtest{
functiontest(){
?>
<?php
print'OK';
}
}
?>

以下警告僅用於PHP4。

小心
名稱stdClass已經被Zend使用並保留。不能在PHP代碼中定義名為stdClass的類。

小心
函數名__sleep和__wakeup在PHP類中是魔術函數。除非想要與之聯系的魔術功能,否則在任何類中都不能以此命名函數。

小心
PHP將所有以__開頭的函數名保留為魔術函數。除非想要使用一些見於文檔中的魔術功能,否則建議不要在PHP中將函數名以__開頭。

在PHP4中,var變數的值只能初始化為常量。用非常量值初始化變數,需要一個初始化函數,該函數在對象被創建時自動被調用。這樣一個函數被稱之為構造函數(見下面)。

<?php
/*PHP4中不能這樣用*/
classCart{
var$todays_date=date("Y-m-d");
var$name=$firstname;
var$owner='Fred'.'Jones';
/*不過包含有常量的數組可以*/
var$items=array("VCR","TV");
}

/*應該這樣進行*/
classCart{
var$todays_date;
var$name;
var$owner;
var$items=array("VCR","TV");
functionCart(){
$this->todays_date=date("Y-m-d");
$this->name=$GLOBALS['firstname'];
/*etc...*/
}
}
?>
類也是一種類型,就是說,它們是實際變數的藍圖。必須用new運算符來創建相應類型的變數。

<?php
$cart=newCart;
$cart->add_item("10",1);

$another_cart=newCart;
$another_cart->add_item("0815",3);
?>
上述代碼創建了兩個Cart類的對象$cart和$another_cart,對象$cart的方法add_item()被調用時,添加了1件10號商品。對於對象$another_cart,3件0815號商品被添加到購物車中。

$cart和$another_cart都有方法add_item(),remove_item()和一個items變數。它們都是明顯的函數和變數。可以把它們當作文件系統中的某些類似目錄的東西來考慮。在文件系統中,可以擁有兩個不同的README.TXT文件,只要不在相同的目錄中。正如從為了根目錄訪問每個文件需要輸入該文件的完整的路徑名一樣,必須指定需要調用的函數的完整名稱:在PHP術語中,根目錄將是全局名字空間,路徑名符號將是->。因而,名稱$cart->items和$another_cart->items命名了兩個不同的變數。注意變數名為$cart->items,不是$cart->$items,那是因為在PHP中一個變數名只有一個單獨的美元符號。

<?php
//正確,只有一個$
$cart->items=array("10"=>1);

//不正確,因為$cart->$items變成了$cart->""
$cart->$items=array("10"=>1);

//正確,但可能不是想要的結果:
//$cart->$myvar變成了$cart->items
$myvar='items';
$cart->$myvar=array("10"=>1);
?>
在定義類的時候,無法得知將使什麼名字的對象來訪問:在編寫Cart類時,並不知道之後對象的名稱將會命名為$cart或者$another_cart。因而你不能在類中使用$cart->items。然而為了類定義的內部訪問自身的函數和變數,可以使用偽變數$this來達到這個目的。$this變數可以理解為「我自己的」或者「當前對象」。因而'$this->items[$artnr]+=$num'可以理解為「我自己的物品數組的$artnr計數器加$num」或者「在當前對象的物品數組的$artnr計數器加$num」。

注意:偽變數$this通常未定義,如果其所在的方法是被靜態調用的話。但這不是個嚴格規定:如果一個方法被從另一個對象內靜態調用的話,則$this會被定義。此時$this的值是那個發出調用的對象。用下例演示:

<?php
classA
{
functionfoo()
{
if(isset($this)){
echo'$thisisdefined(';
echoget_class($this);
echo")\n";
}else{
echo"\$thisisnotdefined.\n";
}
}
}

classB
{
functionbar()
{
A::foo();
}
}

$a=newA();
$a->foo();
A::foo();
$b=newB();
$b->bar();
B::bar();
?>
上例將輸出:

$thisisdefined(a)
$thisisnotdefined.
$thisisdefined(b)
$thisisnotdefined.注意:有一些不錯的函數用來處理類和對象。應該關注一下類/對象函數。

㈧ php模塊和類對象的區別

建議看看下面鏈接的網頁,有問題再補充:網頁鏈接

㈨ php類和對象問題

$this
的含義是表示
實例化後的
具體對象!
我們一般是先聲明一個類,然後用這個類去實例化對象!
但是,當我們在聲明這個類的時候,想在類本身內部使用本類的屬性或者方法。應該怎麼表示呢?
例如:
我聲明一個User類!它只含有一個屬性
$name;
class
User
{
public
$_name;
}
現在,我給User類加個方法。就用getName()方法,輸出$name屬性的值吧!
復制PHP內容到剪貼板
PHP代碼:
class
User
{
public
$name;
function
getName()
{
echo
$this->name;
}
}
//如何使用呢?
$user1
=
new
User();
$user1->name
=
'張三';
$user1->getName();
//這里就會輸出張三!
$user2
=
new
User();
$user2->name
=
'李四';
$user2->getName();
//這里會輸出李四!
怎麼理解呢?
我上面創建了兩個User對象。分別是
$user1

$user2

當我調用
$user1->getName()的時候。
上面User類中的代碼
echo
$this->name
;
就是相當於是
echo
$user1->name;
----------------------------------------->>>補充一下>>>
有static修飾的變數和函數不能出現$this
你看到的函數一定沒有static
建議你系統的學習一下PHP,這樣瞎猜是很浪費時間的
static
$a1和self::$a1或者$a::$a1是一起使用的。
var
$a1和$this->a1是一起使用的
class
Abc{
static
$a1;
}
class
Abc{
var
$a1;
}
兩個$a1是不同的。
第一個用self::$a1或者$a::$a1引用,
第二個用$this->$a1或者$a->a1引用
首先static的函數里不能出現$this,只能是self
class
Abc{
public
static
$a1
=
"im
a1!<br/>";
public
static
function
go()
{
echo(self::$a1);
}
}
Abc::go();
?>

熱點內容
sql存儲過程返回多個結果 發布:2025-01-28 03:24:03 瀏覽:462
長安歐尚科賽哪個配置值得購買 發布:2025-01-28 03:19:35 瀏覽:115
c全排列演算法 發布:2025-01-28 03:18:16 瀏覽:753
梵蒂岡頂級時裝ftp 發布:2025-01-28 03:03:36 瀏覽:694
手游腳本有前途嗎 發布:2025-01-28 02:46:55 瀏覽:378
抓包編程 發布:2025-01-28 02:42:41 瀏覽:929
安卓平板上怎麼設置熱點 發布:2025-01-28 02:36:33 瀏覽:717
如何在手機上壓縮圖片 發布:2025-01-28 02:34:09 瀏覽:989
伺服器ip掛上公網 發布:2025-01-28 02:31:15 瀏覽:978
吃雞配置需要什麼條件 發布:2025-01-28 02:26:15 瀏覽:9