Maison développement back-end tutoriel php PHP设计模式系列 - 模板模式_PHP教程

PHP设计模式系列 - 模板模式_PHP教程

Jul 13, 2016 pm 05:52 PM
php 创建 对象 抽象 方法 模式 模板 de série 设计模式

模板模式
模板设计模式创建了一个实施一组方法的抽象对象,子类通常将这个对象作为模板用于自己的设计。
 
设计场景
一般会用于数据库抽象类。
代码设计:
[php] 
if (!defined('IS_INITPHP')) exit('Access Denied!'); 
/*********************************************************************************
 * InitPHP 2.0 国产PHP开发框架  Dao-dbbase Driver DB基类
 *-------------------------------------------------------------------------------
 * 版权所有: CopyRight By initphp.com
 * 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己
 *-------------------------------------------------------------------------------
 * $Author:zhuli
 * $Dtime:2011-10-09 
***********************************************************************************/ 
abstract class dbbaseInit{ 
 
    /**
     * 抽象数据库链接
     * @param  string $host sql服务器
     * @param  string $user 数据库用户名
     * @param  string $password 数据库登录密码
     * @param  string $database 数据库
     * @param  string $charset 编码
     * @param  string $pconnect 是否持久链接
     */ 
    abstract protected function connect($host, $user, $password, $database, $charset = 'utf8', $pconnect = 0); 
     
    /**
     * 抽象数据库执行语句
     * @param  string $sql SQL语句
     * @return obj
     */ 
    abstract protected function query($sql); 
     
    /**
     * 抽象数据库-结果集中的行数
     * @param $result 结果集
     * @return array
     */ 
    abstract protected function result($result, $num=1); 
     
    /**
     * 抽象数据库-从结果集中取得一行作为关联数组
     * @param $result 结果集
     * @return array
     */ 
    abstract protected function fetch_assoc($result); 
     
    /**
     * 抽象数据库-从结果集中取得列信息并作为对象返回
     * @param  $result 结果集
     * @return array
     */ 
    abstract protected function fetch_fields($result); 
     
    /**
     * 抽象数据库-前一次操作影响的记录数
     * @return int
     */ 
    abstract protected function affected_rows(); 
     
    /**
     * 抽象数据库-结果集中的行数
     * @param $result 结果集
     * @return int
     */ 
    abstract protected function num_rows($result); 
     
    /**
     * 抽象数据库-结果集中的字段数量
     * @param $result 结果集
     * @return int
     */ 
    abstract protected function num_fields($result); 
     
    /**
     * 抽象数据库-获取上一INSERT的ID值
     * @return Int
     */ 
    abstract protected function insert_id(); 
     
    /**
     * 抽象数据库-释放结果内存
     * @param obj $result 需要释放的对象
     */ 
    abstract protected function free_result($result); 
     
    /**
     * 抽象数据库链接关闭
     * @param  string $sql SQL语句
     * @return obj
     */ 
    abstract protected function close(); 
     
    /**
     * 错误信息
     * @return string
     */ 
    abstract protected function error(); 

 
 
if (!defined('IS_INITPHP')) exit('Access Denied!'); 
/*********************************************************************************
 * InitPHP 2.0 国产PHP开发框架  Dao-mysqli 基类
 *-------------------------------------------------------------------------------
 * 版权所有: CopyRight By initphp.com
 * 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己
 *-------------------------------------------------------------------------------
 * $Author:zhuli
 * $Dtime:2011-10-09 
***********************************************************************************/ 
class mysqliInit extends dbbaseInit{ 
     
    public $link_id; //链接对象  
      
    /**
     * MYSQL连接器
     * @param  string $host sql服务器
     * @param  string $user 数据库用户名
     * @param  string $password 数据库登录密码
     * @param  string $database 数据库
     * @param  string $charset 编码
     * @param  string $pconnect 是否持久链接
     * @return obj
     */ 
    public function connect($host, $user, $password, $database, $charset = 'utf8', $pconnect = 0) { 
        $link_id = ($pconnect == 0) ? mysqli_connect($host, $user, $password) : mysqli_pconnect($host, $user, $password); 
        if (!$link_id) InitPHP::initError('mysql connect error!'); 
        mysqli_query($link_id, 'SET NAMES ' . $charset); 
        if (!mysqli_select_db($link_id, $database)) InitPHP::initError('database is not exist!'); 
        return $link_id; 
    } 
     
    /**
     * SQL执行器
     * @param  string $sql SQL语句
     * @return obj
     */ 
    public function query($sql) { 
        return mysqli_query($this->link_id, $sql); 
    } 
     
    /**
     * 结果集中的行数
     * @param $result 结果集
     * @return array
     */ 
    public function result($result, $num=1) { 
        return mysqli_result($result, $num); 
    } 
         
    /**
     * 从结果集中取得一行作为关联数组
     * @param $result 结果集
     * @return array
     */ 
    public function fetch_assoc($result) { 
        return mysqli_fetch_assoc($result); 
    } 
     
    /**
     * 从结果集中取得列信息并作为对象返回
     * @param  $result 结果集
     * @return array
     */ 
    public function fetch_fields($result) { 
        return mysqli_fetch_field($result); 
    } 
     
    /**
     * 结果集中的行数
     * @param $result 结果集
     * @return int
     */ 
    public function num_rows($result) { 
        return mysqli_num_rows($result); 
    } 
     
    /**
     * 结果集中的字段数量
     * @param $result 结果集
     * @return int
     */ 
    public function num_fields($result) { 
        return mysqli_num_fields($result); 
    } 
     
    /**
     * 释放结果内存
     * @param obj $result 需要释放的对象
     */ 
    public function free_result($result) { 
        return mysqli_free_result($result); 
    } 
     
    /**
     * 获取上一INSERT的ID值
     * @return Int
     */ 
    public function insert_id() { 
        return mysqli_insert_id($this->link_id); 
    } 
     
    /**
     * 前一次操作影响的记录数
     * @return int
     */ 
    public function affected_rows() { 
        return mysqli_affected_rows($this->link_id); 
    } 
     
    /**
     * 关闭连接
     * @return bool
     */ 
    public function close() { 
        if ($this->link_id !== NULL) @mysqli_close($this->link_id); 
        $this->link_id = NULL; 
        return true; 
    } 
     
    /**
     * 错误信息
     * @return string
     */ 
    public function error() { 
        return mysqli_error($this->link_id); 
    } 
     

作者:initphp

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/478081.htmlTechArticle模板模式 模板设计模式创建了一个实施一组方法的抽象对象,子类通常将这个对象作为模板用于自己的设计。 设计场景 一般会用于数据库...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Le meilleur moment pour acheter la série Huawei Mate 60, la nouvelle élimination de l'IA + mise à niveau de l'image et profiter des promotions d'automne Le meilleur moment pour acheter la série Huawei Mate 60, la nouvelle élimination de l'IA + mise à niveau de l'image et profiter des promotions d'automne Aug 29, 2024 pm 03:33 PM

Depuis la mise en vente de la série Huawei Mate60 l’année dernière, j’utilise personnellement le Mate60Pro comme téléphone principal. En près d'un an, le Huawei Mate60Pro a subi plusieurs mises à niveau OTA et l'expérience globale a été considérablement améliorée, donnant aux gens le sentiment d'être constamment nouveaux. Par exemple, récemment, la série Huawei Mate60 a de nouveau reçu une mise à niveau majeure de ses capacités d'imagerie. Le premier est la nouvelle fonction d'élimination de l'IA, qui peut éliminer intelligemment les passants et les débris et remplir automatiquement les zones vides. Deuxièmement, la précision des couleurs et la clarté du téléobjectif de la caméra principale ont été considérablement améliorées. Étant donné que c'est la rentrée scolaire, la série Huawei Mate60 a également lancé une promotion d'automne : vous pouvez profiter d'une réduction allant jusqu'à 800 yuans lors de l'achat du téléphone, et le prix de départ est aussi bas que 4 999 yuans. Produits couramment utilisés et souvent nouveaux avec une grande valeur

See all articles