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

php類和對象

發布時間: 2022-10-31 16:01:59

1. php中面向對象的類中,屬性都允許哪些數據類型

對屬性或方法的訪問控制,是通過在前面添加關鍵字 public、protected 或 private 來實現的。由 public 所定義的類成員可以在任何地方被訪問;由 protected 所定義的類成員則可以被其所在類的子類和父類訪問(當然,該成員所在的類也可以訪問);而由 private 定義的類成員則只能被其所在類訪問。

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

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

3. 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等。

(3)php類和對象擴展閱讀:

PHP的發展現狀:

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

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


4. php 中如何得到一個對象的類型

得到一個對象的類型,使用gettype()函數:

<?php
echogettype(1);//輸出integer
echogettype(array());//輸出array


得到一個對象是哪個類的實例,使用get_class()函數:

<?php
$o=newstdClass();
echoget_class();//輸出stdClass


得到一個類或對象的方法和屬性,要使用反射:

<?php
classMyClass{
public$var;
publicfunctionfoo(){}
}
$ref=newReflectionClass('MyClass');
$ref->getProperties();//會返回一組對象,用法參考PHP手冊
$ref->getMethods();//會返回一組對象,用法參考PHP手冊

$obj=newMyClass();
$ref=newReflectionObject($obj);
$ref->getProperties();
$ref->getMethods();

5. PHP中對象的小問題

首先,大多數情況下,涉及到類和函數(方法)的時候才會用到this!
在一個類中,即在同一個class下,會存在多個變數和函數,例如/*
class test{
private $user;
function setuser($user){
$this->user = $user ;//請注意這句話
}
}*/
這個小例子中出現了兩個user,如何來區分?對於function來說,使用傳遞過來的參數或者new出來的變數,直接寫名字;使用function之外的變數,用$this->變數名;

對象使用的是$對象->變數名,而不是this,二樓說的不清楚

6. PHP是什麼

PHP(PHP:Hypertext Preprocessor遞歸縮寫)中文名字是:「超文本預處理器」,是一種廣泛使用的通用開源腳本語言,適合於Web網站開發,它可以嵌入HTML中。編程范型是面向對象、命令式編程的,截止2019年4月24日為止,最新的版本是PHP 5.6.0(28 Aug 2014),其操作的系統為windows/linux/Mac跨平台。

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

PHP的功能

1、創建博客

使用PHP創建博客wordpres,可以輕松創建博客。即使您不具備PHP知識,也可以使用它,但如果您可以編寫PHP,則可以自定義您的博客並創建主題。

2、網站開發

60%全球互聯網網站採用php技術,80%國內互聯網網站使用php開發。這些網站包含購物網站,政府企業網站,QQ空間,論壇博客等等。

3、移動端微網站開發以及小程序

移動設備的普及為移動互聯網的快速發展奠定了基礎!手機淘寶網站,手機京東網站等等, 微信公眾號應用中的微網站。

7. 可以在一個php類文件中創建另一個php類文件的對象嗎

1、不可以在一個類裡面再創建一個類,但是可以require一個包含類的文件

2、一個php文件裡面可以創建多個類

3、一個函數裡面可以再創建另一個函數

<?php
functiona(){
functionb(){
echo123;
}
b();
}
a();
?>

不知道是不是你想要的答案

8. php創建一個類,在類中聲明一個數組存放另一個對象,為什麼無法調用數組中對象的方法

//新建一個類User用來存放這,三個數據
//結果放到一個User數組中,你看這可以嗎?
//還是說要放到一個list中?

public class ObjectTest {

public static void main(String[] args) {
String[] id = new String[8];
String[] type = new String[8];
String[] username = new String[8];

User[] users = getUsers(type, id, username);
}

private static User[] getUsers(String[] type, String[] id, String[] username) {
User[] users = new User[type.length];
for (int i = 0; i < type.length; i++) {
users[i] = new User(id[i], type[i], username[i]);
}
return users;
}
}

class User {

public User(String id, String tpye, String username) {
this.tpye = tpye;
this.id = id;
this.username = username;
}

private String tpye;
private String id;
private String username;

public String getTpye() {
return this.tpye;
}

public String getId() {
return this.id;
}

public String getUsername() {
return this.username;
}

public void setTpye(String tpye) {
this.tpye = tpye;
}

public void setId(String id) {
this.id = id;
}

public void setUsername(String username) {
this.username = username;
}

}

9. php 運行機制

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

第 18 章 類與對象(PHP 4)
目錄

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



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

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

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

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

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

function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} elseif ($this->items[$artnr] == $num) {
unset($this->items[$artnr]);
return true;
} else {
return false;
}
}
}
?>

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

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

<?php
class test {
?>
<?php
function test() {
print 'OK';
}
}
?>

但是以下用法是可以的:

<?php
class test {
function test() {
?>
<?php
print 'OK';
}
}
?>

以下警告僅用於 PHP 4。

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

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

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

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

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

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

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

$another_cart = new Cart;
$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
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}

class B
{
function bar()
{
A::foo();
}
}

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

$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.

注意: 有一些不錯的函數用來處理類和對象。應該關注一下類/對象函數。

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

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

熱點內容
存儲伺服器地址錯誤 發布:2025-05-20 14:01:46 瀏覽:911
資料庫優先 發布:2025-05-20 13:59:39 瀏覽:277
androidurl判斷 發布:2025-05-20 13:50:11 瀏覽:259
共享文件夾沒有啟動伺服器服務 發布:2025-05-20 13:43:38 瀏覽:804
天龍八部游戲怎麼切換伺服器 發布:2025-05-20 13:42:36 瀏覽:631
亞馬遜免費主機是什麼配置 發布:2025-05-20 13:40:10 瀏覽:696
存儲類型默認分配 發布:2025-05-20 13:32:26 瀏覽:663
qq信息加密 發布:2025-05-20 13:31:32 瀏覽:342
文件夾嗅探器foldersniffer 發布:2025-05-20 12:33:36 瀏覽:913
編譯裝入 發布:2025-05-20 12:32:48 瀏覽:563