本文目錄一覽:
- 1、關於php當中static關鍵字,資料上說只能初始化一次。但是數組變量在定義時賦值會被下一次初始化覆蓋?!
- 2、php 變量怎麼初始化
- 3、PHP類中給成員屬性初始化值為什麼報錯?
- 4、php中下面$txt怎麼初始化
- 5、php中不同文件中定義的變量的用法
關於php當中static關鍵字,資料上說只能初始化一次。但是數組變量在定義時賦值會被下一次初始化覆蓋?!
你定義了static 就是靜態變量
但是靜態變量的初始化只進行一次,而且是定義靜態變量的時候初始化
static $a = array(1,2,3);
print_r($a);
static $a = array();
這樣實際上是定義了兩次靜態變量,並初始化,實際做會執行其中一個
就是後面這個
上面的代碼實際上會被編譯器編程這樣
?php
function f1(){
static $a = array();
print_r($a);
print_r($a);
}
function f2(){
static $a = array();
$a[] = 1;
$a[] = 2;
$a[] = 3;
print_r($a);
print_r($a);
}
php 變量怎麼初始化
直接
$a = ”;
$b = 0;
$c = array();
就可以了,php在這方面比較省事,靜態變量用define定義
如define(‘AAA’,0);
類對象變量用 var
如 var $aaa = 0;
PHP類中給成員屬性初始化值為什麼報錯?
$var=$myvar 屬性的值不能是變量!!!這是最基礎的知識。
注意:成員屬性不可以是帶運算符的表達式、變量、方法或函數的調用。 如:
public $var3 = 1+2;
public $var4 = self::myStaticMethod();
public $var5 = $myVar;
正確定義方式:
public $var6 = 100; //普通數值(4個標量:整數、浮點數、布爾、字串)
public $var6 = myConstant; //常量
public $var7 = self::classConstant; //靜態屬性
public $var8 = array(true, false); //數組
php中下面$txt怎麼初始化
默認情況下 PHP.ini內 error_reporting設置為:
error_reporting = E_ALL
這樣如果有Notice也會顯示出來,你可以
修改為
error_reporting = E_ALL ~E_NOTICE
來解決這個問題,但是不推薦,因為PHP開發建議有良好的習慣。
一般在我們要使用變量前,最好都賦一下值,也就是如 $txt=”;$i=0;之類的操作。
如果要判斷數組是否存在這個鍵值也最好用 isset($ary[‘key’]) 進行判斷一下,這樣就能夠根除這個錯誤提示,也是PHP的嚴謹開發者。
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.
注意: 有一些不錯的函數用來處理類和對象。應該關注一下類/對象函數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/195310.html