
批改狀態(tài):合格
老師批語(yǔ):從關(guān)鍵字入手, 學(xué)習(xí)是一個(gè)捷徑
1、代碼:
<?php
namespace mode;
class Single
{
private static $mysql=null;
private function __construct(...$linkParams)
{
list($dsn,$username,$password)=$linkParams;
self::$mysql=new \PDO($dsn,$username,$password);
}
private function __clone()
{
// …………
}
public static function getnew(...$linkParams)
{
if (is_null(self::$mysql)) {
new self(...$linkParams);
}
return self::$mysql;
}
}
$link=['mysql:host=NewYear.com;dbname=php','phptest','123456'];
$mysql=Single::getnew(...$link);
$my=Single::getnew(...$link);
var_dump($mysql===$my);
echo '<pre>'.print_r($mysql->query('select * from `staffs`')->fetchAll(\PDO::FETCH_ASSOC),true).'</pre>';
運(yùn)行結(jié)果圖:
1、目錄結(jié)構(gòu):
2、Minus.php代碼:
<?php
namespace base\method;
class Minus
{
public $num1;
public $num2;
public function __construct($num1,$num2)
{
$this->num1=$num1;
$this->num2=$num2;
}
public function get_result()
{
$c = $this->num1 - $this->num2;
return '相減結(jié)果是:'.$c;
}
}
3、Plus.php代碼:
<?php
namespace base\method1;
class Plus implements Post
{
public $num1;
public $num2;
public function __construct($num1,$num2)
{
$this->num1=$num1;
$this->num2=$num2;
}
public function get_result()
{
$c = $this->num1 + $this->num2;
return '相加結(jié)果是:'.$c;
}
}
// $plus=new Plus(1,2);
// echo $plus->get_result();
4、Ride.php代碼:
<?php
namespace base\method1;
class Ride implements Post
{
public $num1;
public $num2;
public function __construct($num1,$num2)
{
$this->num1=$num1;
$this->num2=$num2;
}
public function get_result()
{
$c = $this->num1 * $this->num2;
return '相乘結(jié)果是:'.$c;
}
}
5、Post.php代碼:
<?php
namespace base\method1;
interface Post
{
public function get_result();
}
6、demo3.php代碼:
<?php
namespace part1;
use base\method1\Minus;
use base\method1\Plus;
use base\method1\Ride;
use base\method1\Post;
require __DIR__.DIRECTORY_SEPARATOR.'autoload.php';
class Count1
{
public function yunsuan(Post $class)
{
return $class->get_result();
}
}
echo (new Count1())->yunsuan(new Plus(1,2)) . '<br>';
echo (new Count1())->yunsuan(new Minus(4,5)) . '<br>';
echo (new Count1())->yunsuan(new Ride(3,9)) . '<br>';
6、運(yùn)行結(jié)果圖:
1、clone
:復(fù)制關(guān)鍵字(對(duì)象);$new=new Mysql();$s=clone $new;
2、__clone()
;復(fù)制對(duì)象實(shí)列,無(wú)法直接備調(diào)用;
3、通過(guò)私有化(private)__construct()
和__clone()
來(lái)禁止類(lèi)實(shí)列化和復(fù)制;
4、spl_autoload_register()
:自動(dòng)加載器(閉包);
5、__DIR__
和dirname()
區(qū)別:__DIR__
和dirname(__FILE__)
功能一致;
6、require 'demo.php';
加載關(guān)鍵字:require
7、接口類(lèi)關(guān)鍵字interface:interface Post{}
8、繼承接口類(lèi)關(guān)鍵字implements:class Mode implements Post{};
9、類(lèi)繼承關(guān)鍵字:extends
10、抽象類(lèi)和方法關(guān)鍵字:abstract 繼承抽象類(lèi)的關(guān)鍵字:extends
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)