中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

one.php 多項目、函數庫和類庫怎么統一版本

發布時間:2021-03-04 16:28:37 來源:億速云 閱讀:172 作者:TREX 欄目:開發技術

這篇文章主要講解了“one.php 多項目、函數庫和類庫怎么統一版本”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“one.php 多項目、函數庫和類庫怎么統一版本”吧!

現在手里有好幾個項目在進行,每個項目都有部分通用的代碼,只想維護一個 函數庫、類庫,并且每個項目都不想有冗余代碼,函數功能更新后,其他項目的函數也需要更新。晚上抽空寫了個 簡單的打包小腳本:one.php,以后 更新函數或類時,只需要在唯一的 函數庫、類庫 中更新,其他項目使用 打包后的 php 腳本即可(理論上也能提高PHP的運行速度,只需要加載、分析一個文件)。

因為我的 函數庫、類庫都在一個目錄下,所以沒有針對相對路徑 做處理(懶),cmd 進入 core 目錄,執行 php one.php 即可按規則打包成一個獨立的文件,運行效果如下。

one.php 多項目、函數庫和類庫怎么統一版本

打包流程,以 public.php 為例。

one.php 多項目、函數庫和類庫怎么統一版本

現在功能有限,僅支持 同一個目錄(因為我只用到了單目錄),如果有哪位大神 在此基礎上修改了多目錄版本,請一定要分享一分給我。

至于用處,除了 方便維護多個項目(A項目、B項目)或同一個項目的多個版本(比如:VIP版、普通版),最大的用處,可以用于商業版程序混淆加密。比如商業軟件:index.php,product.php 每個文件都打包混淆加密,每個文件都包含了所有的代碼(幾萬行)。破解者解密后,看到幾萬行代碼,上百個函數(可能都還有用),同一個功能,各個文件內的函數名都不一致,會哭死的。

測試包下載地址:

one.php 源代碼:onephp.rar

核心代碼

<?php
/**
 * 類名:One
 * 作者:mqycn
 * 博客:http://www.miaoqiyuan.cn
 * 源碼:http://www.miaoqiyuan.cn/p/one-php
 * 說明:多項目 函數庫、類庫 統一為一個版本的方法
 */
 
class OneFile {
 
  //已經合并的文件
  public static $includes;
 
  //處理一個文件
  public static function run($index_file, $output_file) {
    self::$includes = array();
    self::log('Input', $index_file);
    $output = self::parse($index_file);
    file_put_contents($output_file, self::repair($output));
    self::log('Output', $output_file);
  }
 
  //分析PHP文件
  public static function parse($file) {
    if (empty(self::$includes[$file])) {
      self::log('Append', $file);
      self::$includes[$file] = true;
      $code = file_get_contents($file);
      if (preg_match_all("/(require_once|require|include_once|include)\s+'([^']*)';/", $code, $match)) {
        for ($i = 0; $i < count($match[0]); $i++) {
          $code = str_replace($match[0][$i], self::parse($match[2][$i]), $code);
        }
 
      }
      return $code;
    } else {
      self::log('Ignore', $file);
      return '';
    }
  }
 
  //代碼修復
  public static function repair($code) {
    $php_prefix = "<?php\r\n";
    $php_suffix = "\r\n?>";
    $code = str_replace("\n", "\r\n", $code);
    $code = str_replace("\r\r\n", "\r\n", $code);
    $code = str_replace($php_prefix, '', $code);
    $code = str_replace($php_suffix, '', $code);
    for ($i = 0; $i < 5; $i++) {
      $code = str_replace("\r\n\r\n", "\r\n", $code);
    }
    return $php_prefix . $code . $php_suffix;
  }
 
  //輸出日志
  public static function log($type, $text, $status = '') {
    if (in_array($type, array('Append', 'Ignore'))) {
      $status = "- ${type}";
      $type = " |-- ";
    } else {
      $type = "${type}:";
    }
    echo "${type} ${text} {$status}\r\n";
  }
}
 
OneFile::run('vip.php', '../vip.php');
OneFile::run('public.php', '../public.php');

感謝各位的閱讀,以上就是“one.php 多項目、函數庫和類庫怎么統一版本”的內容了,經過本文的學習后,相信大家對one.php 多項目、函數庫和類庫怎么統一版本這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大余县| 平昌县| 六枝特区| 金溪县| 聂拉木县| 康平县| 滁州市| 洛阳市| 大田县| 乌拉特中旗| 怀安县| 佛坪县| 鸡东县| 冕宁县| 扶余县| 宁南县| 洛南县| 北辰区| 双柏县| 襄城县| 姜堰市| 革吉县| 江山市| 来宾市| 普定县| 阿坝县| 岑巩县| 黄龙县| 恩平市| 仙游县| 濉溪县| 怀仁县| 若羌县| 五华县| 东乡族自治县| 枞阳县| 绥棱县| 大荔县| 铅山县| 桓仁| 上饶市|