php自定義類
『壹』 php中如何在自定義的類中調用pdo中的方法
自定義一個類myPDO,定義一個屬性$pdo,在myPDO的構造方法或者其他方法中,實例化一個pdo對象,賦給myPDO的屬性$pdo
『貳』 ThinkPHP中怎麼使用自定義的封裝類
類文件都是以.class.php為後綴(這里是指的ThinkPHP內部使用的類庫文件,不代表外部載入的類庫文件),使用駝峰法命名,並且首字母大寫,例如 DbMysql.class.php;
類的命名空間地址和所在的路徑地址一致,例如 HomeControllerUserController類所在的路徑應該是 Application/Home/Controller/UserController.class.php;
確保文件的命名和調用大小寫一致,是由於在類Unix系統上面,對大小寫是敏感的(而ThinkPHP在調試模式下面,即使在Windows平台也會嚴格檢查大小寫);
類名和文件名一致(包括上面說的大小寫一致),例如 UserController類的文件命名是UserController.class.php, InfoModel類的文件名是InfoModel.class.php, 並且不同的類庫的類命名有一定的規范;
類的導入載入可以參考手冊的命名空間和自動載入,下面是地址:
命名空間:http://document.thinkphp.cn/manual_3_2.html#namespace
自動載入:http://document.thinkphp.cn/manual_3_2.html#autoload
『叄』 thinkphp3.2 怎樣調用自定義類
將類文件 abc.class.php 放入以下目錄:ThinkPHP/Library/Org/Util/
類文件開頭必須命名空間:namespace OrgUtil;
使用時直接實例化類:new OrgUtil類名
OK,恭喜你成功了
『肆』 thinkphp的自定義model類有什麼作用
繼承MODEL類..
你如果要問我繼承是什麼,和現實中"繼承"詞彙差不多, 但是在語言中
a繼承b, a就有了b所有屬性, a還有b沒有的屬性,就是在自己類裡面定義的東西.
model的屬性只是適用大眾,不可能寫的太死,但是當你自定義 userModel,newsModel,arcModel類....就能在類裡面寫適合該類方法.
model就相當貓科動物信息,他記載貓科所有信息:四條腿,哺乳類,陸地生活.
你新自定義類:就相當於你新建了:老虎,貓,獅子.....繼承了貓科類, 而貓科類所具有的信息就不要再重復增加.
你建的貓類 只需要:增加 撲鼠,吃老鼠 信息即可...
『伍』 PHP實現的自定義數組排序函數與排序類示例
本文實例講述了PHP實現的自定義數組排序函數與排序類。分享給大家供大家參考,具體如下:
/*
*
二維數組自定義排序函數
*
uasort($arr,function_name)
*
**/
$arr
=
array(
array('a'=>1,'b'=>'c'),
array('a'=>4,'b'=>'a'),
array('a'=>5,'b'=>'g'),
array('a'=>7,'b'=>'f'),
array('a'=>6,'b'=>'e')
);
function
compare_arr($x,$y){
if($x['b']<$y['b']){
return
-1;
}else
if($x['b']>$y['b']){
return
1;
}else{
return
0;
}
}
uasort($arr,'compare_arr');
foreach($arr
as
$a){
echo
$a['a'].'=>'.$a['b'].'<br/>';
}
手冊里的自定義排序類:
class
multiSort
{
var
$key;
//key
in
your
array
//排序函數
參數依次是
數組
待排列索引
排序類型
function
run
($myarray,
$key_to_sort,
$type_of_sort
=
'')
{
$this->key
=
$key_to_sort;
if
($type_of_sort
==
'desc')
uasort($myarray,
array($this,
'myreverse_compare'));
else
uasort($myarray,
array($this,
'mycompare'));
return
$myarray;
}
//正序
function
mycompare($x,
$y)
{
if
(
$x[$this->key]
==
$y[$this->key]
)
return
0;
else
if
(
$x[$this->key]
<
$y[$this->key]
)
return
-1;
else
return
1;
}
//逆序
function
myreverse_compare($x,
$y)
{
if
(
$x[$this->key]
==
$y[$this->key]
)
return
0;
else
if
(
$x[$this->key]
>
$y[$this->key]
)
return
-1;
else
return
1;
}
}
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP數組(Array)操作技巧大全》、《php排序演算法總結》、《php字元串(string)用法總結》、《PHP針對XML文件操作技巧總結》、《PHP錯誤與異常處理方法總結》、《PHP運算與運算符用法總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
『陸』 PHP中如何定義類及其成員屬性與操作
實測
php中,在類里邊可以定義屬性
class
a
{
public
$name;
public
$type;
}
在類中不能定義屬性,但是可以定義變數,並將其賦給他所在類的屬性
class
a
{
public
$name;
function
b(){
$othername
=
1;
$this->name
=
$othername;
}
}
$a
=
new
a();
$a->b();
echo
$a->name;
最後,祝新年快樂
『柒』 php如何自定義類庫
說白了,我就是把一些經常使用到的函數,方法寫在一起,以後可以直接引用。
既然是庫,就把安然規則,把庫名,規范排好。
若是存在在多個文件夾里,只能用包含方式。
若不包含,無法實現:你設想一番,php如何能找到你的方法,類,在哪裡??php去哪裡尋找啊?你找不到啊?
只能包含在一起。
如何做過規范,有序的包含,建議你下載開源的(discuz.dedecms)閱讀一番即可。養成良好的方法。
『捌』 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.注意:有一些不錯的函數用來處理類和對象。應該關注一下類/對象函數。