ホームページ  >  記事  >  バックエンド開発  >  adodbzip class_PHP チュートリアル

adodbzip class_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:06:57989ブラウズ

adodbzip クラス
/**
*AdodbZip 1.1
*
* 著者:
* Z(QQ番号602000 QQグループ5193883)
*
* コード例:
* include_once 'AdodbZip.php';
* $db = AdodbZip::init(NewADOConnection('mysqltutorialt'));
* echo $db->GetOne('SELECT NOW()');
*
* プロセスの説明:
* 1. $extract_dir に Adodb プログラム ファイルが存在し、$zip_file が存在しない場合は、$extract_dir にある Adodb プログラム ファイルを使用します。
* 2. $extract_dir に Adodb プログラム ファイルが存在し、$zip_file が存在する場合、変更時刻を比較し、$extract_dir にある Adodb プログラム ファイルが新しいものに更新されます。
* 3. $extract_dir に Adodb プログラム ファイルが存在せず、$zip_file が存在する場合は、$extract_dir にある Adodb プログラム ファイルが $zip_file から解凍されます。
* 4. $extract_dir に Adodb プログラム ファイルが存在せず、$zip_file も存在しない場合は、$zip_url から Adodb Zip ファイルをダウンロードし、Adodb プログラム ファイルを解凍します。
*
*その他の指示:
※1. $extract_dirはカスタマイズ可能です。 Adodb Zip パッケージをこのディレクトリに完全に抽出する場合は、$zip_url と $zip_file の設定を無視できます。これは、従来の Adodb の使用と同じです。
※2. $zip_fileはカスタマイズ可能です。 $zip_file が存在する場合、$zip_url は無視できるため、$zip_file はサイト全体で均一に使用できます。
※3. $zip_urlはカスタマイズ可能です。 Adobe のバージョンはいつでも変更できます。現時点では、バージョンが相互に干渉しないように、$zip_file と $extract_dir にはデフォルト値を使用することが最善です。
※4. $server、$user、$pwd、$dbはカスタマイズ可能です。デフォルトは mysql のデフォルト値です。この項目は、AdodbZip::init メソッドを呼び出した後にのみ有効になります。
※5. $charsetはカスタマイズ可能です。デフォルトでは、エンコーディングは変更されません。この項目は、AdodbZip::init メソッドを呼び出した後にのみ有効になります。
※6. AdodbZip::initメソッドでAdodbの初期化値を追加できます。
​*/

/**
* AdodbZip 起動アイテム
​*/
//パラメータを設定します
AdodbZip::$zip_url = 'http://c.net チュートリアル works-kr-1.dl.sourceforge.net/project/adodb/adodb-php5-only/adodb-509-for-php5/adodb509.zip'; //[設定項目] Adob​​eのZipファイルのダウンロードアドレス ファイルが大きい場合は、先にダウンロードまたは解凍することをお勧めします
AdodbZip::$zip_file = sys_get_temp_dir () . preg_replace ( '/^.*/(adodb.*?.zip)$/i', 'adodb/$1', AdodbZip::$zip_url ); Adodb の Zip ファイルのキャッシュの場所
AdodbZip::$entry_dir = 'adodb5';
AdodbZip::$extract_dir = sys_get_temp_dir () . 'adodb/' . AdodbZip::$entry_dir; //[設定項目] Adodb プログラムファイルのキャッシュ場所
AdodbZip::$server = 'localhost' //[設定項目] サーバー
; AdodbZip::$user = 'root' //[設定項目] ユーザー名
; AdodbZip::$pwd = ''; //[設定項目] パスワード
; AdodbZip::$db = 'test' //【設定項目】データベースチュートリアル
; AdodbZip::$charset = '' //【設定項目】エンコーディング

;


//登録同意書
if (! in_array ( 'AdodbZip', stream_get_wrappers () )) {
stream_wrapper_register ( 'AdodbZip', 'AdodbZip' );
}
//定数を定義します
if (! 定義 ( 'ADODB_DIR' )) {
定義 ( 'ADODB_DIR', 'AdodbZip:/' );
}
// プログラムが含まれています
require_once (ADODB_DIR . '/adodb.inc.php');
// $db = AdodbZip::init(NewADOConnection('mysqlt')) // [選択された項目] は $db
の定義を参照します // return AdodbZip::init(NewADOConnection('mysqlt')); // [選択] 参照は $db を返すことに注意してください。


/**
*AdodbZip クラス定義
​*/
クラスAdodbZip {
 
 /**
* Adodb 変数
​*/
 パブリック静的 $zip_url;
 パブリック静的 $zip_file;
 パブリック静的 $entry_dir;
 パブリック静的 $extract_dir;
 パブリック静的 $server;
 パブリック静的 $user;
 パブリック静的 $pwd;
 パブリック静的 $db;
 パブリック静的 $charset;
 
 /**
* ストリーム変数
​*/
 プライベート $ハンドル;
 パブリック $context;
 
 /**
* Adodb 関数グループ
​*/
 
 /**
  *初期化
  * @param adodb &$adodb
  * @return adodb
 */
 パブリック静的関数 init(&$adodb) {
  $adodb->Connect ( self::$server, self::$user, self::$pwd, self::$db );
  if(self::$charset!=''){
   $adodb->Execute('SET NAMES '.self::$charset.';');
  }
  $adodb を返します;
 }
 
 /**
* ストリーム機能グループ
​*/
 
 /**
  * __構築
 */
 パブリック関数 __construct() {
 }
 
 /**
  * ストリームキャスト
  * @param int $cast_as
  * @return リソース
 */
 パブリック関数 stream_cast($cast_as) {
  false を返します;
 }
 
 /**
  * ストリーム_クローズ
 */
 パブリック関数 stream_close() {
  fclose ( $this->handle );
 }
 
 /**
  * ストリーム_eof
  * @return bool
 */
 パブリック関数 stream_eof() {
  return feof ( $this->handle );
 }
 
 /**
  * ストリームフラッシュ
  * @return bool
 */
 パブリック関数 stream_flush() {
  return fflush ( $this->handle );
 }
 
 /**
  * ストリームロック
  * @param モード $options
  * @return bool
 */
 パブリック関数 stream_lock($options) {
  return flock ( $this->handle, $options );
 }
 
 /**
  * ストリームオープン
  * @param string $path
  * @param string $mode
  * @param int $options
  * @param 文字列 &$opend_path
  * @return bool
 */
 パブリック関数 stream_open($path, $mode, $options, &$opend_path) {
  // 验证文件地址
  if (! preg_match ( '/^.*?://(.*)$/', $path, $matches )) {
   false を返します;
  }
  $tmp_file = self::$extract_dir 。 DIRECTORY_SEPARATOR 。 $matches [1];
  $entry_file = self::$entry_dir 。 '/' 。 str_replace ( '', '/', $matches [1] );
  $zip_file = self::$zip_file;
  // 验证程序文件
  if (! file_exists ( $tmp_file ) || file_exists ( $zip_file ) && filectime ( $tmp_file ) < filectime ( $zip_file )) {
   // ダウンロード文書
   if (! file_exists ( $zip_file )) {
    // 目录处理
    if (! is_dir ( dirname ( self::$zip_file ) )) {
     if (mkdir ( dirname ( self::$zip_file ), 0777, true ) === false) {
      header ( 'Content-type: text/html;charset=utf-8' );
      die ( '请创建目录 ' . $zip_dir );
     }
    }
    // ダウンロード文書
    if (! file_exists ( self::$zip_file )) {
     $break = true;
     やります{
      $url_arr = parse_url ( self::$zip_url );
      $fp = fsockopen ( $url_arr ['host'], isset ( $url_arr ['port'] ) ? ( int ) $url_arr ['port'] : 80, $errno, $errstr, 10 );
      if ($fp === false) {
       休憩;
      }
      $out = "GET" 。 $url_arr ['パス'] 。 " HTTP/1.0rnホスト: " 。 $url_arr ['ホスト'] 。 " rn接続: 近いnrn";
      fputs ( $fp, $out );
      if (feof ( $fp )) {
       休憩;
      }
      $buffer = fgets ( $fp, 1024 );
      if (! preg_match ( '/^HTTP/1.d 200 /i', $buffer )) {
       休憩;
      }
      $content_length = false;
      $content_start = false;
      while ( ! feof ( $fp ) ) {
       $buffer = fgets ( $fp, 1024 );
       if ($buffer === "rn") {
        $content_start = true;
        休憩;
       }
       if (preg_match ( '/^Content-Length:s*(d+)/i', $buffer, $matches )) {
        $content_length = ( int ) $matches [1];
       }
      }
      if ($content_length === false || $content_start === false) {
       休憩;
      }
      $content = stream_get_contents ( $fp );
      if ($content === false) {
       休憩;
      }
      $result = file_put_contents ( self::$zip_file, $content );
      設定を解除 ( $content );
      if ($result === false) {
       休憩;
      }
      fclose ( $fp );
     } while ( $break = false );
     if ($break) {
      header ( 'Content-type: text/html;charset=utf-8' );
      die ( '请下載文件 ' . self::$zip_url . '.zip 保存用 ' . self::$zip_file ) ;
     }
    }
   }
   // 创建目录
   $tmp_dir = ディレクトリ名 ( $tmp_file );
   if (! is_dir ( $tmp_dir )) {
    if (mkdir ( $tmp_dir, 0777, true ) === false) {
     header ( 'Content-type: text/html;charset=utf-8' );
     die ( '请创建目录 ' . $tmp_dir );
    }
   }
   // 打开压缩文件
   $zip = zip_open ( $zip_file );
   if (! is_resource ( $zip )) {
    false を返します;
   }
   // 寻找解压文件
   やります{
    $entry = zip_read ( $zip );
    if (! is_resource ( $entry )) {
     false を返します;
    }
    if (zip_entry_name ( $entry ) == $entry_file) {
     休憩;
    }
   } while ( true );
   // 转存压缩文件
   zip_entry_open ( $zip, $entry );
   file_put_contents ( $tmp_file, zip_entry_read ( $entry, zip_entry_filesize ( $entry ) ) );
   zip_entry_close ( $entry );
   zip_close ( $zip );
  }
  // 打开文件
  $this->handle = fopen ( $tmp_file, $mode );
  if (! is_resource ( $this->handle )) {
   false を返します;
  }
  true を返します;
 }
 
 /**
  * ストリーム読み取り
  * @param int $count
  * @戻り文字列
 */
 パブリック関数 stream_read($count) {
  return fread ( $this->handle, $count );
 }
 
 /**
  * ストリームシーク
  * @param int $offset
  * @param int $whence=SEEK_SET
  * @return bool
 */
 パブリック関数 stream_seek($offset, $whence = SEEK_SET) {
  return fseek ( $this->handle, $offset, $whence );
 }
 
 /**
  * ストリームセットオプション
  * @param int $option
  * @param int $arg1
  * @param int $arg2
  * @return bool
  */
 パブリック関数 stream_set_option($option, $arg1, $arg2) {
  false を返します;
 }
 
 /**
  * ストリーム統計
  * @return 配列
 */
 パブリック関数 stream_stat() {
  return fstat ( $this->handle );
 }
 
 /**
  * ストリームテル
  * @return int
 */
 パブリック関数 stream_tell() {
  return ftell ( $this->handle );
 }
 
 /**
  * ストリーム書き込み
  * @param string $data
  * @return int
 */
 パブリック関数 stream_write($data) {
  return fwrite ( $this->handle, $data );
 }
 
 /**
  * url_stat
  * @param string $path
  * @param int $flag
  * @return 配列
 */
 パブリック関数 url_stat($path, $flag) {
  if (! preg_match ( '/^.*?://(.*)$/', $path, $matches )) {
   false を返します;
  }
  $tmp_file = self::$extract_dir 。 DIRECTORY_SEPARATOR 。 $matches [1];
  if (file_exists ( $tmp_file )) {
   if ($flag & STREAM_URL_STAT_LINK) {
    lstat ( $tmp_file ) を返します;
   } その他 {
    統計を返す ( $tmp_file );
   }
  }
  if ($flag & STREAM_URL_STAT_QUIET) {
   $arr = array ('dev' => 0, 'ino' => 0, 'mode' => 0, 'nlink' => 0, 'uid' => 0, 'gid' => ; 0、'rdev' => 0、'atime' => 0、'blksize' => 0 , 'ブロック' => 0 );
;    return array_merge ( array_values ( $arr ), $arr );
  }
  false を返します;
 }
}
?>
直接样例view sourceprint?1

2 include_once 'AdodbZip.php'; 

3 $db = AdodbZip::init(NewADOConnection('mysqlt')); 

4 echo $db->GetOne('SELECT NOW()'); 

5 ?>

もです。 1.AdodbZip.php文件を含む
2. AdodbZip::init(...) 関数は adodb 接続クラスの初期化を実行します。

http://www.bkjia.com/PHPjc/630590.html

tru​​ehttp://www.bkjia.com/PHPjc/630590.html技術記事 adodbzip 类 ?php教程 /** * AdodbZip 1.1 * * 作成者: * Z(QQ号602000 QQ群5193883) * * 代償例: * include_once 'AdodbZip.php'; * $db = AdodbZip::init(NewADOConnection('m...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。