忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


share

2025/04/06 21:11 |
Zend Framework2.1.4 Zend\Uri\Uri
Zend\Uri\Uriは、URLなどを論理的に作成・分析できますよというクラスです。
APIを呼び出す際のURLを論理的に作成したり、ユーザ入力値の検証などに使えるでしょう。

01<?php
02    require_once('path/to/channel/vendor/autoload.php');
03     
04    // HTTP
06    $uri = Zend\Uri\UriFactory::factory($http);
07     
08    // 分析
09        // 正しいURLか
10        $uri->isValid(); // true
11        // 正しい相対パスか
12        $uri->isValidRelative(); // false
13        // 絶対パスか
14        $uri->isAbsolute(); // true
15         
16        // スキーマを取得
17        $uri->getScheme(); // http
18        // ユーザ名/パスワードを取得
19        $uri->getUserInfo(); // NULL
20        // ホスト名を取得
21        $uri->getHost(); // example.com
22        // ポート番号を取得
23        $uri->getPort(); // 80
24        // パスを取得
25        $uri->getPath(); // /foo/../bar.php
26        $uri->getQuery(); // a=1&b=2
27        $uri->getQueryAsArray(); // array('a'=>'1', 'b'=>'2')
28        $uri->getFragment(); // hoge
29         
30        // 参照を解消
31        $uri->normalize()->toString(); // http://example.com/bar.php?a=1&b=2#hoge
32        // ベースURIからの相対パスにする
33        $uri->makeRelative('http://example.com/foo/')->toString(); // bar.php?a=1&b=2#hoge
34            /* ../bar.php?a=1&b=2#hogeにならないのはバグな気がする */
35         
36    // 作成
37        $uri->setScheme('https');
38        $uri->setUserInfo('user:pass');
39        $uri->setHost('example.jp');
40        $uri->setPort(443);
41        $uri->setPath('/fuga.php');
42        $uri->setQuery(array('c'=>'3', 'd'=>'4'));
43        $uri->setFragment('');
44         
45        $uri->toString(); // https://user:pass@example.jp:443/fuga.php?c=3&d=4
Zend\Uri\UriFactory::factoryにチェックしたいURLを突っ込むと、適切なZend\Uri\UriInterface実装クラスが帰ってきます。
今回は'http'なのでZend\Uri\Httpクラスのインスタンスとなります。
他にも色々あるかと思いきや、実は'mailto'のZend\Uri\Mailto、'file'のZend\Uri\Fileしかありません。
FTPすら無いとはびっくりだ。
ところでこれがDIなんですかね、いまいちわかりません。

normalize()やmakeRelative()はsetという名前は付いていませんがオブジェクトを直接書き換えるので、以後getScheme()やgetPath()などの値が変わる可能性があります。
少しだけ気をつけましょう。

このようにZend\Uri\Uriを使うことで、URLの論理的な組み立て、分解が可能になりました。

PR

share

2013/04/22 23:50 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<AuraPHP 1.0.0 Aura.Uri | HOME | 買ったものリスト 2013/04/21>>
忍者ブログ[PR]