日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP OOP(面向对象)进阶知识之“Trait技术”

發布時間:2023/12/16 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP OOP(面向对象)进阶知识之“Trait技术” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么要用 Trait?

  • php是單繼承的語言, 即一個類只允許多一個父類中繼承成員
  • trait是一個與"類"類似的數據結構,內部可以聲明一些方法或屬性,供調用者使用
  • Trait 解析了什么問題?

  • 解決php只能從一個類中繼承成員的問題
  • 最大程度的實現了代碼復用
  • 對一些無法用類進行封裝的功能,使用Trait封裝更加的方便,實用
  • trait的創建語句與class類是完全一樣的
    trait 使用 trait 關鍵字來聲明, 同樣, 也不允許實例化,只能是調用類調用

    <?phpnamespace Demo; use PDO;// trait的創建語句與class類是完全一樣的 // trait 使用 trait 關鍵字來聲明, 同樣, 也不允許實例化,只能是調用類調用trait Db {// 連接數據庫public function connect($dsn, $username, $password){return new PDO($dsn, $username, $password);} }trait Query {// 查詢滿足條件的第一個記錄public function get($pdo, $where){$where = empty($where) ? '' : ' WHERE ' . $where;$stmt = $pdo->prepare('SELECT * FROM `staff` ' . $where . ' LIMIT 1');$stmt->execute(); // die($stmt->debugDumpParams());return $stmt->fetch(PDO::FETCH_ASSOC);}// select, insert, update, delete }// 客戶端 class Client {// 在宿主類中調用上面聲明的兩個方法集traituse Db;use Query;// use Db, Query;public $pdo = null;public function __construct($dsn, $username, $password){// 調用Trait類Db中的conect()$this->pdo = $this->connect($dsn, $username, $password);}public function find($where){return $this->get($this->pdo, $where);} }$dsn = 'mysql:host=127.0.0.1;dbname=php'; $username = 'root'; $password = 'a757871402';$client = new Client($dsn, $username, $password);echo '<pre>'. print_r($client->find('age < 40'), true);

    數據庫

    -- Adminer 4.7.2 MySQL dumpSET NAMES utf8; SET time_zone = '+00:00'; SET foreign_key_checks = 0; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';DROP TABLE IF EXISTS `staff`; CREATE TABLE `staff` (`staff_id` int(3) NOT NULL AUTO_INCREMENT COMMENT '主鍵',`name` varchar(30) NOT NULL COMMENT '姓名',`age` tinyint(3) unsigned NOT NULL DEFAULT '25' COMMENT '年齡',`sex` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '1:男0:女',`position` varchar(20) NOT NULL COMMENT '職位',`mobile` char(11) NOT NULL COMMENT '手機號',`hiredate` int(10) unsigned NOT NULL COMMENT '入職時間',PRIMARY KEY (`staff_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `staff` (`staff_id`, `name`, `age`, `sex`, `position`, `mobile`, `hiredate`) VALUES (1, '侯亮平', 43, 1, '反貪局長', '13576543210', 851356800), (2, '祁同偉', 46, 1, '公安廳長', '13023458765', 1420041600), (3, '高育良', 57, 1, '政法書記', '15678789933', 981734400), (4, '李達康', 51, 1, '市委書記', '13088856222', 1336838400), (5, '沙瑞金', 56, 1, '省委書記', '18956490987', 1179158400), (6, '趙東來', 41, 1, '公安局長', '15999999999', 1375891200), (7, '高小琴', 36, 0, '山水莊園', '18967678877', 1452528000), (8, '陳清泉', 48, 1, '外語學霸', '13023487666', 1320940800), (9, '鐘小艾', 38, 0, '反貪總局', '13576588333', 1318348800), (10, '陸亦可', 35, 0, '調查處長', '13099912345', 1218297600), (11, '小龍女', 29, 0, '古墓掌門', '13989897754', 1378656000), (12, '韋小寶', 24, 1, '太監總管', '15709887875', 1560927140), (13, '郭靖', 44, 1, '中原大俠', '13576543422', 1560927140), (14, '滅絕師太', 68, 0, '峨眉掌門', '18909887655', 1481472000), (15, '李莫愁', 37, 0, '赤煉仙子', '13878665439', 1481472000), (16, '洪七公', 75, 1, '丐幫幫主', '13507665428', 1234567890), (17, '楊康', 32, 1, '金國王爺', '15805512348', 1560993700), (18, '梅超風', 49, 0, '女魔頭', '17765443256', 1560993815), (19, '金輪法王', 52, 1, '蒙古國師', '13709887878', 1560994207), (20, '老頑童', 68, 1, '全真教師叔', '13688776548', 1560995043), (21, '歐陽克', 37, 1, '大淫賊', '19988776676', 1560993700);

    待續…

    總結

    以上是生活随笔為你收集整理的PHP OOP(面向对象)进阶知识之“Trait技术”的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。