目次
PHPのAdodbzipクラスインスタンス、phpadodbzipクラスインスタンス
ホームページ バックエンド開発 PHPチュートリアル php の Adodbzip クラス インスタンス、phpadodbzip クラス インスタンス_PHP チュートリアル

php の Adodbzip クラス インスタンス、phpadodbzip クラス インスタンス_PHP チュートリアル

Jul 13, 2016 am 10:12 AM
php インスタンス化する 親切

PHPのAdodbzipクラスインスタンス、phpadodbzipクラスインスタンス

この記事の例では、php の adodbzip プログラム コードについて説明します。参考のためにみんなで共有してください。詳細は以下の通りです

コードをコピーします コードは次のとおりです:
<?php
/**
* AdodbZip 1.1
*
* コード例:
* include_once 'AdodbZip.php'
; * $db = AdodbZip::init(NewADOConnection('mysql チュートリアル')); * 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->接続 ( 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 モード $オプション
  * @return bool
 */
 パブリック関数 stream_lock($options) {
  return flock ( $this->handle, $options );
 }
 
 /**
  * ストリームオープン
  * @param 文字列 $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) {
ヘッダー ( 'Content-type: text/html;charset=utf-8' ); die ( 'ファイルをダウンロードしてください<a href="' . self::$zip_url . '">' . self::$zip_url . '.zip</a > 名前を付けて保存' . self::$zip_file ) ;
}
}
}
//ディレクトリを作成します
$tmp_dir = ディレクトリ名 ( $tmp_file ); if (! is_dir ( $tmp_dir )) {
If (mkdir ( $tmp_dir, 0777, true ) === false) {
ヘッダー ( '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) {
休憩
}
} ながら (真); // 圧縮ファイルを転送
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
  * @return 文字列
 */
パブリック関数 stream_read($count) {
fread ( $this->handle, $count ) を返します。 }

/**
  * ストリームシーク
  * @param int $offset
  * @param int $whence=SEEK_SET
  * @return bool
 */
パブリック関数 stream_seek($offset, $whence = SEEK_SET) {
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() {
fstat ( $this->handle ) を返します。 }

/**
  * ストリームテル
  * @return int
 */
パブリック関数 stream_tell() {
ftell ( $this->handle ) を返します。 }

/**
  * ストリーム書き込み
  * @param string $data
  * @return int
 */
パブリック関数 stream_write($data) {
fwrite ( $this->handle, $data ); を返します。 }

/**
  * url_stat
  * @param 文字列 $path
  * @param int $flag
  * @return 配列
 */
パブリック関数 url_stat($path, $flag) {
if (! preg_match ( '/^.*?://(.*)$/', $path, $matches )) {
false を返します。 }
$tmp_file = self::$extract_dir . $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 , 'ブロック' =>
;array_merge ( array_values ( $arr ), $arr ) を返します。 }
false を返します。 }
}
?>

使用例のコードは以下の通りです:


コードをコピーします コードは次のとおりです:<?php
include_once 'AdodbZip.php'; $db = AdodbZip::init(NewADOConnection('mysqlt')); echo $db->GetOne('SELECT NOW()'); ?>

それも2ステップです

1. AdodbZip.php ファイルが含まれています
2. AdodbZip::init(...) 関数は adodb 接続クラスを初期化します
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

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

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/923899.html技術記事 php の adodbzip クラスの例、phpadodbzip クラスの例 この記事では、php の adodbzip クラスのプログラム コードについて説明します。参考のためにみんなで共有してください。詳細は次のとおりです。 コードをコピーします。 コードは次のとおりです。 php...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

CakePHP バリデータの作成

See all articles