送信の送信と取得をシミュレートできるシミュレートされたフォーム クラス。
リリース: 2016-07-25 08:48:22
最近プロジェクトに取り組んでいたとき、バックエンドは準備できましたが、フロントエンドのテンプレートがまだ利用できないため、テストの方が面倒でした。そこで、curl を介したフォーム送信をシミュレートする簡単なスクリプトを作成しました。データは配列と文字列の 2 つの方法で送信できます。
- /**
- * Class SimulantForm シミュレーション フォーム
- */
- class SimulantForm {
- /**
- * @var 送信するページのURL
- */
- protected $_url;
- /**
- * @var resourcecurl_init()によって返されるcurlハンドル
- */
- protected $_ch ;
- /**
- * フォームを初期化します
- * @param $_url URL
- */
- public function __construct($_url) {
- $this->gt;_ch =curl_init();
- $this->setUrl($_url);
- curl_setopt($this- >_ch, CURLOPT_RETURNTRANSFER, 1);
- }
-
- /**
- *getメソッド経由で送信
- * @param配列|文字列フォームデータ
- * @returnmixed
- */
- public function get($_data = '') {
- $this->_url .= $this->_setGetData($ _data);
- $this->setUrl($this->_url);
- $result =curl_exec($this->_ch);
- curl_close($this->_ch);
- return $result;
- }
-
- /**
- * 投稿経由で送信
- * @param array|string form data
- * @returnmixed
- */
- public function post($_data) {
- curl_setopt($this->_ch, CURLOPT_POST, 1);
- $this->_setPostData($_data);
- $result =curl_exec($this->_ch);
- curl_close($this->_ch);
- return $result;
- }
-
- /**
- * エラーメッセージを返す
- * @return array array[0]: エラー番号、array[1]: エラーメッセージ
- */
- public function getLastError() {
- return array( curl_errno($this->_ch)、curl_error($this->_ch));
- }
-
- /**
- * SETOPT_COOKIEFILE を設定します
- * @param string $_cookieFile ファイルの実際のパス
- */
- public function setCookieFile($_cookieFile) {
- curl_setopt($this-> _ch, CURLOPT_COOKIEFILE, $_cookieFile);
- }
-
- /**
- * SETOPT_COOKIEJAR を設定します
- * @param string $_cookieFile ファイルの実際のパス
- */
- public function setCookieJar($_cookieFile) {
- curl_setopt($this->_ch, CURLOPT_COOKIEJAR, $_cookieFile);
- }
-
- / **
- * URLを設定します
- * @param $_url
- */
- 保護関数 setUrl($_url) {
- $this->_url = $_url;
- curl_setopt($this->_ch, CURLOPT_URL, $_url);
- }
-
- /**
- * getモードで送信するときにデータを設定します
- * @param $_get_data 文字列または配列
- * @returnmixed
- */
- 保護された関数 _setGetData($_get_data) {
- if(is_array($_get_data)) {
- return $this->_getDataToString($_get_data);
- } elseif(is_string($_get_data)) {
- return $_get_data;
- }
- }
-
- /**
- * 投稿モードで送信するときにデータを設定します
- * @param array|string $_post_data
- */
- protected function _setPostData ($_post_data) {
- curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $_post_data);
- }
-
- /**
- * 配列形式で送信された情報を get メソッド経由で送信するための文字列に解析します
- * @param array $_get_data
- * @return string
- */
- protected function _getDataToString(array $_get_data) {
- return '?' . http_build_query($_get_data); //1階を参照、http_build_query関数に置き換えると、oschinaの編集機能が本当にひどいです。
- }
- }
コードをコピー
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31