Maison  >  Article  >  développement back-end  >  Comment effectuer une classe de formatage de préfixe d'identification via php

Comment effectuer une classe de formatage de préfixe d'identification via php

jacklove
jackloveoriginal
2018-06-20 18:01:201947parcourir

Les tables de base de données ont généralement une clé primaire à incrémentation automatique avec un champ de type int et nommé id.

Avantages : l'utilisation du type int peut s'auto-incrémenter et économiser de l'espace de stockage par rapport au type de caractère.
Inconvénients : id est un type numérique Lorsque vous souhaitez interroger les données correspondant à un identifiant, il est difficile de déterminer sur quelle table de données il est basé sur l'identifiant.

Par conséquent, nous devrions utiliser int lors du stockage et effectuer un traitement sur l'identifiant lors de l'affichage, afin qu'il soit facile de savoir à quelle table appartient l'identifiant.

Écrit la classe suivante pour ajouter des préfixes aux identifiants et restaurer les identifiants préfixés.

Prefix.class.php

<?php/**
 * ID前缀格式化类
 * Date:    2016-10-27
 * Author:  fdipzone
 * Ver:     1.0
 *
 * Func
 * public getPrefixId    生成已加前缀的id
 * public getId          还原为id
 * public getPrefixType  根据已加前缀id获取前缀类型
 */class Prefix{ // class start

    // 定义前缀常量
    const USER_TYPE = &#39;user&#39;;       // 用户
    const ORDER_TYPE = &#39;order&#39;;     // 订单
    const MESSAGE_TYPE = &#39;message&#39;; // 消息

    // 前缀设定
    private static $prefix = array(        self::USER_TYPE => &#39;U&#39;,        self::ORDER_TYPE => &#39;O&#39;,        self::MESSAGE_TYPE => &#39;M&#39;
    );    /**
     * 创建带前缀的id
     * @param  Int     $id          id
     * @param  Int     $prefix_type 类型
     * @return String
     */
    public static function getPrefixId($id, $prefix_type=&#39;&#39;){
        // 有自定义前缀类型
        if(isset(self::$prefix[$prefix_type])){            return self::$prefix[$prefix_type].$id;
        }        // 没有自定义前缀类型
        return $id;
    }    /**
     * 还原为id
     * @param  String $prefix_id 已加前缀id 
     * @return Int
     */
    public static function getId($prefix_id){
        preg_match(&#39;/\d+/&#39;, $prefix_id, $arr);        if(isset($arr[0])){            return $arr[0];
        }        return 0;
    }    /**
     * 根据已加前缀id获取前缀类型
     * @param  String $prefix_id 已加前缀id 
     * @return Int
     */
    public static function getPrefixType($prefix_id){

        // 获取id前缀
        preg_match(&#39;/[A-Za-z]+/&#39;, $prefix_id, $arr);        if(isset($arr[0])){            $prefix = $arr[0];            // 获取前缀
            $prefixs = array_flip(self::$prefix);            if(isset($prefixs[$prefix])){                return $prefixs[$prefix];
            }
        }        return &#39;&#39;;
    }

} // class end?>

demo.php

<?phprequire &#39;Prefix.class.php&#39;;// 原始id$user_id = 1001;$order_id = 2016102743765214;$message_id = 109283;echo &#39;<pre class="brush:php;toolbar:false">&#39;;// 已加前缀idecho &#39;1.id加前缀&#39;.PHP_EOL;$prefix_user_id = Prefix::getPrefixId($user_id, Prefix::USER_TYPE);$prefix_order_id = Prefix::getPrefixId($order_id, Prefix::ORDER_TYPE);$prefix_message_id = Prefix::getPRefixId($message_id, Prefix::MESSAGE_TYPE);echo $prefix_user_id.PHP_EOL;echo $prefix_order_id.PHP_EOL;echo $prefix_message_id.PHP_EOL.PHP_EOL;// 前缀类型echo &#39;2.根据已加前缀id获取前缀类型&#39;.PHP_EOL;echo Prefix::getPrefixType($prefix_user_id).PHP_EOL;echo Prefix::getPrefixType($prefix_order_id).PHP_EOL;echo Prefix::getPrefixType($prefix_message_id).PHP_EOL.PHP_EOL;// 还原为原始idecho &#39;3.还原为原始id&#39;.PHP_EOL;echo Prefix::getId($prefix_user_id).PHP_EOL;echo Prefix::getId($prefix_order_id).PHP_EOL;echo Prefix::getId($prefix_message_id).PHP_EOL.PHP_EOL;echo &#39;
';?>

Sortie :

1.id加前缀
U1001
O2016102743765214
M1092832.根据已加前缀id获取前缀类型
user
order
message3.还原为原始id10012016102743765214109283

Constante de préfixe personnalisée, qui peut être créée en fonction de vos besoins.

Cet article explique comment utiliser php pour effectuer le formatage du préfixe d'identification. Pour plus de contenu connexe, veuillez faire attention au site Web chinois de php.

Recommandations associées :

Comment imprimer_r via php Méthode pour restaurer les données traitées dans le tableau d'origine

Juger la connexion via PDO en php Méthodes disponibles

Utilisez php pour déterminer si la page ou l'image a été compressée par gzip

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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