-
如果構(gòu)造函數(shù)定義成了私有方法,則不允許直接實(shí)例化對(duì)象了,這時(shí)候一般通過靜態(tài)方法進(jìn)行實(shí)例化,在設(shè)計(jì)模式中會(huì)經(jīng)常使用這樣的方法來控制對(duì)象的創(chuàng)建,比如單例模式只允許有一個(gè)全局唯一的對(duì)象。
class Car {
? ?private function __construct() {
? ? ? ?echo 'object create';
? ?}
? ?private static $_object = null;
? ?public static function getInstance() {
? ? ? ?if (empty(self::$_object)) {
? ? ? ? ? ?self::$_object = new Car(); //內(nèi)部方法可以調(diào)用私有方法,因此這里可以創(chuàng)建對(duì)象
? ? ? ?}
? ? ? ?return self::$_object;
? ?}
}
//$car = new Car(); //這里不允許直接實(shí)例化對(duì)象
$car = Car::getInstance(); //通過靜態(tài)方法來獲得一個(gè)實(shí)例查看全部 -
直接寫的字符串是不會(huì)匹配的. 只有符合正則規(guī)則才會(huì)匹配
查看全部 -
元字符:正則表達(dá)式中具有特殊含義的字符
\????????轉(zhuǎn)義字符? ? ? ? \s匹配任意空白符?
^????????在方括號(hào)外面時(shí),表示斷言目標(biāo)的開始位置? ? ? ?/^我[^\s]+(蘋果|香蕉)$/
????????? 作為第一個(gè)字符時(shí),表示字符取反? ? ?[^\s]匹配任意非空白符
$????????斷言目標(biāo)的結(jié)束位置????????/^我[^\s]+(蘋果|香蕉)$/
.????????匹配除換行符外的任何字符? ??[\w\.\-]
[????????開始字符類定義
]?????????結(jié)束字符類定義
|????????開始一個(gè)可選分支? ? ? ? ? 蘋果|香蕉? 匹配蘋果或香蕉
(????????子組的開始標(biāo)記
)????????子組的結(jié)束標(biāo)記
?????? ? 作為量詞表示0次或1次匹配
*????????量詞,0次或多次匹配
+????????量詞,1次或多次匹配????????[^\s]+一次或多次匹配空白字符
{????????自定義量詞開始標(biāo)記
}????????自定義量詞結(jié)束標(biāo)記
-????????標(biāo)記字符范圍????????????
???????? 在方括號(hào)內(nèi)時(shí),0-9表示0到9之間的所有數(shù)字
/^我[^\s]+(蘋果|香蕉)$/
^開始????????
查看全部 -
/http:\/\//
正則匹配模式由分隔符/包括
如果正則匹配模式中需要匹配分隔符,則可以使用反斜杠\進(jìn)行轉(zhuǎn)義,即是標(biāo)注正則匹配模式中的分割符是需要匹配的對(duì)象
$p = '/' . preg_quote($p, '/') . '/';
點(diǎn)號(hào).用來串聯(lián)字符串
preg_quote來標(biāo)注變量$p中存在需要匹配的字符'/'
查看全部 -
?php
clahttp://idcbgp.cn/code/547#editor-tabs-phpss Car {
? ? public $name = 'car';
? ??
? ? public function __clone() {? ? ? ? ? ? //? ?__clone來進(jìn)行對(duì)象復(fù)制
? ? ? ? $obj = new Car();
? ? ? ? $obj->name = $this->name;
? ? }
}
$a = new Car();? ? ? ? ? // 聲明一個(gè)對(duì)象a
$a->name = 'new car';? ? // 對(duì)象a的名字定義為'new car'
$b = clone $a;? ? ? ? ? ?// 克隆對(duì)象a,把對(duì)象a屬性name的值復(fù)制復(fù)制給對(duì)象b
if ($a == $b) echo '==';? ?//true? ? ? ? 兩個(gè)對(duì)象都是同一個(gè)類的實(shí)例,兩個(gè)對(duì)象的屬性都相等
if ($a === $b) echo '==='; //false? ? ? ?兩個(gè)對(duì)象是否是同一個(gè)
$str = serialize($a);? ?// 對(duì)象序列化成字符串
echo "\n" . $str.'<br>';
$c = unserialize($str); // 字符串反序列化為對(duì)象
var_dump($c);
//? “var_dump”是PHP中的調(diào)試函數(shù),用于判斷一個(gè)變量的類型與長度,并輸出變量的數(shù)值。
查看全部 -
<?php
class Car {
? ? public $speed = 10;
? ? /**
? ? ?*? 方法__call實(shí)現(xiàn)重載:
? ? ?*? 當(dāng)調(diào)用與參數(shù)$name匹配的函數(shù)時(shí),會(huì)把該函數(shù)在類中重新載入
? ? ?*/
? ? public function __call($name, $args) {
? ? ? ? if ($name == 'speedDown') {
? ? ? ? ? ? $this->speed -= 10;
? ? ? ? }
? ? }
}
$car = new Car();
$car->speedDown(); //調(diào)用不存在的speedDown方法
echo $car->speed;
/**
?*? ? ? __set:? 實(shí)現(xiàn)對(duì)不存在的屬性賦值
?*/
?
public function __set($key, $val) {
? ? $this->ary[$key] = $val;
}
$car->name = '汽車';? ? ? ? ?//? ? 當(dāng)類中屬性name不存在時(shí),創(chuàng)建屬性name,并賦值
/**
?*? ? ? __get:? 實(shí)現(xiàn)對(duì)不存在的屬性讀取
?*/
public function __get($key) {
? ? if (isset($this->ary[$key])) {? ? ? ? //? ? 如果類中的屬性key不存在
? ? ? ? return $this->ary[$key];? ? ? ? ? //? ? 返回這個(gè)值
? ? }
? ? return null;
}
/**
?*? ? ? __isset:? 判斷屬性是否設(shè)置
?*/
public function __isset($key) {
? ? if (isset($this->ary[$key])) {
? ? ? ? return true;? ? ? ? ? ? ? ? ? ? ?//? ? ? 如果屬性已設(shè)置,返回true
? ? }
? ? return false;
}
?
/**
?*? ? ? __unset:? 銷毀屬性
?*/
public function __unset($key) {
? ? unset($this->ary[$key]);? ? ? ? ? ? ?//? ? ?直接銷毀屬性key
}
?
?
查看全部 -
class Car {? ? ? ? ? ? ? ? ? ? ? ? ?//????定義一個(gè)類Car
????public?$speed?=?0;???//??定義類中的一個(gè)屬性$speed ????public?function?speedUp()?{?????????//????定義類中的一個(gè)方法speedUp ?????????$this->speed?+=?10;????????????//????使用$this代表當(dāng)前類,并使用$this->speed來在該類的方法中調(diào)用該類的屬性 ?????????return?$this->speed;???????????//????類Car的方法Speed是一個(gè)函數(shù),他返回當(dāng)前類的屬性speed的值 ????} } class?Truck?extends?Car?{???????????????//????定義一個(gè)類Truck繼承類Car ????public?function?speedUp()?{?????????//????在子類中重寫父類中已有的方法speedUp ????????$this->speed?=?parent::speedUp()?+?50;????????//????在子類的方法中調(diào)用父類的方法 ????????return?$this->speed;????????????//????返回值是子類Truck繼承父類的屬性speed ?????} } $car?=?new?Truck();?????//????聲明一個(gè)對(duì)象car,該對(duì)象是類Truck的一個(gè)實(shí)例 $car->speedUp();????????//????調(diào)用對(duì)象的方法speedUp(),將在類Truck中尋找方法 echo?$car->speed;???????//????打印出對(duì)象的屬性speed ???? 重點(diǎn)1 使用parent::來調(diào)用子類中與父類重名的方法
查看全部 -
<?php
//定義一個(gè)Car類并實(shí)例化一個(gè)對(duì)象
class Car {
? ? public $name = "布加迪威龍";? ??
? ? public $money = 2000;//定義屬性
? ??
? ??
? ? public function getInfo() {? ? ? ??
? ? ? ? echo "品牌名是:".$this->name."<br>價(jià)值是:".$this->money;
? ? ?}
}
$car = new car();
$car->getInfo();
?>
查看全部 -
<?php
$fruit=array('蘋果','香蕉','菠蘿');
foreach($fruit as $key=>$value){
? ? echo '<br>第'.$key.'值是:'.$value;
}
?>
一個(gè)點(diǎn)都不可以少
查看全部 -
$arr=array()查看全部
-
前頁為$page,每頁顯示$n條數(shù)據(jù),那么m為當(dāng)前頁前面所有的數(shù)據(jù),即$m = ($page-1) * $n
<?php
//連接數(shù)據(jù)庫
mysql_connect('127.0.0.1', 'code1', '');
mysql_select_db('code1');
mysql_query("set names 'utf8'");
$page = 2;
$pagesize = 2;//預(yù)設(shè)翻頁參數(shù)
//在下兩行構(gòu)建分頁查詢
$offset = ($page - 1) * $pagesize;
$sql = "select * from user limit $offset, $pagesize";
//獲取翻頁數(shù)據(jù)
$result = mysql_query($sql);
$data = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
? ? $data[] = $row;
}
echo '<pre>';
print_r($data);
echo '</pre>';
查看全部 -
獲取數(shù)據(jù)集中的一行數(shù)據(jù),最常用的是mysql_fetch_array
//連接數(shù)據(jù)庫
mysql_connect('127.0.0.1', 'code1', '');
mysql_select_db('code1');
mysql_query("set names 'utf8'");
//數(shù)據(jù)預(yù)處理 防止查詢不到數(shù)據(jù)
mysql_query("insert into user(name, age, class) values('王二', 19, '高三五班')");
//進(jìn)行數(shù)據(jù)查詢
$sql = "select * from user limit 1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);//在這里獲取一行數(shù)據(jù)
echo '<pre>';
print_r($row);
echo '</pre>';
//使用mysql_fetch_array函數(shù)獲取一行數(shù)據(jù),并將他賦值到$row變量中,以便于后面輸出。
查看全部 -
插入數(shù)據(jù)其實(shí)也是通過執(zhí)行一個(gè)sql語句來實(shí)現(xiàn),通常數(shù)據(jù)都是存儲(chǔ)在變量或者數(shù)組中,因此sql語句需要先進(jìn)行字符串拼接得到。
$name = '李四';
$age = 18;
$class = '高三一班';
$sql = "insert into user(name, age, class) values('$name', '$age', '$class')";
mysql_query($sql); //執(zhí)行插入語句查看全部 -
PHP要對(duì)數(shù)據(jù)庫進(jìn)行操作,首先要做的是與數(shù)據(jù)庫建立連接,通常我們使用mysql_connect函數(shù)進(jìn)行數(shù)據(jù)庫連接,該函數(shù)需要指定數(shù)據(jù)庫的地址,用戶名及密碼。
$host = 'localhost';
$user = 'code1';
$pass = '';
$link = mysql_connect($host, $user, $pass);PHP連接數(shù)據(jù)庫的方式類似于直接在命令行下通過進(jìn)行連接,類似:mysql -hlocalhost -ucode1 -p,當(dāng)連接成功以后,我們需要選擇一個(gè)操作的數(shù)據(jù)庫,通過mysql_select_db函數(shù)來選擇數(shù)據(jù)庫。
mysql_select_db('code1');
通常我們會(huì)先設(shè)置一下當(dāng)前連接使用的字符編碼,一般的我們會(huì)使用utf8編碼。
mysql_query("set names 'utf8'");
通過上面的步驟,我們就與數(shù)據(jù)庫建立了連接,可以進(jìn)行數(shù)據(jù)操作了。
查看全部 -
//創(chuàng)建可拋出一個(gè)異常的函數(shù)
function checkNum($number){
? ? if($number>1){
? ? ? ? throw new Exception("異常提示-數(shù)字必須小于等于1");
? ? }
? ? return true;
}<?php
$filename = 'test.txt';
try {
? ? if (!file_exists($filename)) {
? ? ? throw new Exception('文件不存在');
? ? }
} catch(Exception $e) {
? ? echo $e->getMessage();
}
查看全部
舉報(bào)