[ ZendFramework1 ] フレームワークのバージョン情報を取得(Zend_Version)

Pocket

ここでは、Zend Framework1 において、フレームワークのバージョン情報を取得するサンプルスクリプトを掲載しています。

スポンサーリンク


Zend_Version クラス

Zend_Version クラスでは、フレームワークのバージョンの取得、比較および 最新の Zend Framework のバージョンが取得可能です。使用用途としては、バージョンの異なるフレームワークをサポートするアプリケーション開発が主なものになると思います。

// 現在使用しているフレームワークのバージョンを取得する
var_dump(Zend_Version::VERSION); // 1.11.3

/*
 * 現在使用しているフレームワークのバージョンと比較
 * 内部では、version_compare() 関数を使用している
 */
var_dump(Zend_Version::compareVersion('1.11.1'));  // -1
var_dump(Zend_Version::compareVersion('1.11.3'));  //  0
var_dump(Zend_Version::compareVersion('1.11.10')); //  1 

/*
 * 現在利用可能なフレームワークのバージョンを取得
 */
var_dump(Zend_Version::getLatest()); // ex. 1.11.5

プロキシ環境で最新バージョンを取得する(動作未確認)

Zend Framework-1.11.3 では、現在利用可能なフレームワークの最新バージョンの取得に fopen() 関数を使用して http://framework.zend.com/api/zf-version の内容を取得しています。そのため、プロキシサーバーを経由している環境や、php.ini において allow_url_fopen を Off にしている場合は、最新バージョンの取得に失敗します。

例)プロキシ環境で最新バージョンを取得しようとした場合のエラー内容


Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: そのようなホストは不明です。


動作未確認ではありますが、Zend_Version::getLatest() を使用せずに、直接 http://framework.zend.com/api/zf-version を取得することで、バージョン情報を取得できるようになると思います。

間違ってたら、ごめんなさい

サンプルその1(stream_context_create)

$url = 'http://framework.zend.com/api/zf-version';
$proxy = array(
            'http' => array(
                        'proxy'           => 'tcp://proxy_addr:8080',  // プロキシサーバ
                        'request_fulluri' => true,                     // プロキシサーバによっては必要
                        'proxy_user'      => 'user',                   // ユーザ名(プロキシ依存)
                        'proxy_pass'      => 'password'                // パスワード(プロキシ依存)
                           )
               );

$sc = stream_context_create($proxy);
echo file_get_contents($url, false, $sc);

サンプルその2(Zend_Http_Client_Adapter_Proxy)


// Zend_Http_Clientの設定
$url = 'http://framework.zend.com/api/zf-version';
$proxy = array(
    'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
    'proxy_host' => 'proxy_addr',         // proxyサーバ
    'proxy_port' => 8080,                 // ポート番号
    'proxy_user' => 'user',               // ユーザー
    'proxy_pass' => 'password'            // パスワード
);

// プロキシにリクエスト送信
$client   = new Zend_Http_Client($url, $proxy);
$response = $client->request();

// レスポンスの内容を取得
echo $response->getBody();

参考

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>