1、 php實(shí)戰(zhàn)教程,php網(wǎng)站如何連接到遠(yuǎn)程mysql數(shù)據(jù)庫(kù)?
在php中如果要連接遠(yuǎn)程數(shù)據(jù)庫(kù)連接方法很簡(jiǎn)單,只要把本地連接localhost或127.0.0.1改成指定遠(yuǎn)程服務(wù)器一IP地址或者直接域名即可。
語(yǔ)法
mysql_connect(servername,username,password);
例子
在下面的例子中,我們?cè)谝粋€(gè)變量中 ($con) 存放了在腳本中供稍后使用的連接。如果連接失敗,將執(zhí)行 "die" 部分:
代碼如下:
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// some code
?>
上面是連接本地?cái)?shù)據(jù)庫(kù),下面把localhost改成遠(yuǎn)程IP即可了
實(shí)例 代碼如下:
$conn=mysql_connect('
http://boaer.com'
,'root','123456888');if(!$conn) echo "失敗!";
else echo "成功!";
// 從表中提取信息的sql語(yǔ)句
$sql="SELECT * FROM user where userName='$user_name'";
// 執(zhí)行sql查詢
$result=mysql_db_query('info', $sql, $conn);
// 獲取查詢結(jié)果
$row=mysql_fetch_row($result);
mysql_close();
2、 php中table的意思?
表格的意思,table是前端html混合編譯器使用的混合編碼,現(xiàn)在不常用, 有的框架實(shí)例化為對(duì)象,如 thinkphp中table標(biāo)簽填寫對(duì)應(yīng)的操作表
3、 hex2bin?
PHP hex2bin() 函數(shù)
實(shí)例
把十六進(jìn)制值轉(zhuǎn)換為 ASCII 字符:
<?php
echo hex2bin("48656c6c6f20576f726c6421");
?>
以上實(shí)例輸出結(jié)果:
Hello World!
定義和用法
hex2bin()函數(shù)把十六進(jìn)制值的字符串轉(zhuǎn)換為 ASCII 字符。
語(yǔ)法
hex2bin( _string_ )
4、 php單例模式該如何實(shí)現(xiàn)?
PHP 單例模式的實(shí)現(xiàn)
單例設(shè)計(jì)模式為了解決在一個(gè)應(yīng)用中只有一個(gè)實(shí)例【比如數(shù)據(jù)庫(kù)實(shí)例】,并且禁止clone 復(fù)制
在PHP中可以繼承單例模式來(lái)使用單例模式的特性,避免每次創(chuàng)建一個(gè)類都要?jiǎng)?chuàng)建一個(gè)對(duì)象
一般Sigleton類的實(shí)現(xiàn) 參考【https://stackoverflow.com/questions/3126130/extending-singletons-in-php】
但是上面參考鏈接其實(shí)也有一點(diǎn)問(wèn)題 【然后我自己添加了一個(gè)回答:) 看到的點(diǎn)個(gè)贊奧】
————————————————
一般單例模式的實(shí)現(xiàn)
class Singleton
{
private static $instance;
private function __construct() {}
final protected function __clone() {} #不允許被重寫并且會(huì)被子類繼承
public static function getInstance()
{
if (! self::$instance instanceof self) {
self::$instance = new self();
}
return self::$instance;
}
}
// $s = new Singleton();#Fatal error: Call to private Singleton::__construct()
$s1 = Singleton::getInstance();
$s2 = Singleton::getInstance();
var_dump($s1,$s2); #object(Singleton)#1 (0) { } object(Singleton)#1 (0) { }
#測(cè)試出來(lái)兩個(gè)實(shí)例是同一個(gè)對(duì)象
#測(cè)試clone 對(duì)象,會(huì)報(bào)錯(cuò),說(shuō)明真的只有一個(gè)對(duì)象存在于應(yīng)用中
// $s2 = clone $s1; #Fatal error: Call to protected Singleton::__clone()
————————————————
上面的代碼看上去沒(méi)有任何問(wèn)題但是如果我們想讓單例模式可以被繼承,讓子類也具有單例模式的特性,就會(huì)出錯(cuò)
Java 中構(gòu)造函數(shù)是私有的不能被繼承,默認(rèn)情況下Java的子類會(huì)在構(gòu)造函數(shù)中調(diào)用父類的無(wú)參數(shù)構(gòu)造方法
PHP 可以繼承,哪怕父類是私有構(gòu)造器
下面是測(cè)試 PHP代碼
class A extends Singleton
{
}
$a = new A();#Fatal error: Call to private Singleton::__construct() 調(diào)用了父類的private 的構(gòu)造函數(shù)
#如果子類中沒(méi)有構(gòu)造函數(shù)就使用父類的構(gòu)造方法,如果有自己的構(gòu)造方法,就不會(huì)自動(dòng)調(diào)用父類的構(gòu)造方法,需要顯式調(diào)用 parent::__construct();
#所以還是需要調(diào)用 靜態(tài)方法獲得實(shí)例
$a = A::getInstance();
var_dump($a);#object(Singleton)#1 (0) { } #出毛病了,實(shí)例化之后還是Singleton對(duì)象
#解決方法使用PHP動(dòng)態(tài)綁定,關(guān)鍵字static 除了靜態(tài)方法之外下面羅列動(dòng)態(tài)綁定的特性
有三個(gè)特性
1) 在非靜態(tài)環(huán)境下,所調(diào)用的類即為該對(duì)象實(shí)例所屬的類【就代表了這個(gè)實(shí)例】
2) 由于 $this-> 會(huì)在同一作用范圍內(nèi)嘗試調(diào)用私有方法,而 static:: 則可能給出不同結(jié)果。 [$this 可以調(diào)用同一范圍的私有變量方法 static 相當(dāng)于類名 比如說(shuō) A::$instance,就不行]
如果 static::function 或者static::$instance 調(diào)用的是同一個(gè)類里面的方法不管是不是private 都o(jì)k 但是如果是不同類的 就會(huì)報(bào)錯(cuò)
猜測(cè)性小結(jié): 只要static 調(diào)用的元素不在同一個(gè)類里面 private 就會(huì)報(bào)錯(cuò)
3) 另一個(gè)區(qū)別是 static:: 只能用于靜態(tài)屬性 不是方法【方法都可以調(diào)用)
所以最后單例模式可以寫成如下格式
需要注意的 使用 self:: 或者 __CLASS__ 對(duì)當(dāng)前類的靜態(tài)引用,取決于定義當(dāng)前方法所在的類
#定義一個(gè)抽象類 被其他類繼承
abstract class Singleton
{
protected static $instance; // 這里必須是protected 如果要讓子類繼承 其次protected才能被 static 調(diào)用
private function __construct(){}
final protected function __clone(){}
public static function getInstance()
{
if (! static::$instance instanceof static) {
static::$instance = new static();
}
return static::$instance
$a = A::getInstance();
$b = B::getInstance();
$c = B::getInstance();
$d = A::getInstance();
$e = A::getInstance();
var_dump($a,$b,$c,$d,$e);
#object(A)#1 (0) { }
#object(B)#2 (0) { }
#object(B)#2 (0) { }
#object(A)#1 (0) { }
#object(A)#1 (0) { }
————————————————
小結(jié):
public static function getInstance()
{
if (! static::$instance instanceof static) {
static::$instance = new static();
}
return static::$instance;
}
# 上面方法中必須使用static::$instance 不能使用self::$instance 的原因是子類動(dòng)態(tài)調(diào)用的是子類的靜態(tài)屬性
# 靜態(tài)屬性必須是 protected 原因是 動(dòng)態(tài)調(diào)用關(guān)鍵字static 調(diào)動(dòng)不是在一個(gè)原生類里面的private的屬性時(shí)相當(dāng)于直接 類名::$instance
# 子類必須重定義 protected static $instance; 否則使用的是父類的靜態(tài)屬性。
大家還有不懂得可以私信給我解答
5、 phpfunction和class有什么區(qū)別呢?
function換個(gè)說(shuō)話就函數(shù)、自定義函數(shù),只是一個(gè)簡(jiǎn)單的數(shù)據(jù)操作而已。class使用于編寫整體框架。對(duì)各個(gè)function進(jìn)行分類,使用中實(shí)例化。
以上就是關(guān)于php實(shí)戰(zhàn)教程以及php網(wǎng)站如何連接到遠(yuǎn)程mysql數(shù)據(jù)庫(kù)的相關(guān)回答,有更多疑問(wèn)可以加微。