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