ホームページ >バックエンド開発 >PHPチュートリアル >送信の送信と取得をシミュレートできるシミュレートされたフォーム クラス。

送信の送信と取得をシミュレートできるシミュレートされたフォーム クラス。

WBOY
WBOYオリジナル
2016-07-25 08:48:22845ブラウズ
最近プロジェクトに取り組んでいたとき、バックエンドは準備できましたが、フロントエンドのテンプレートがまだ利用できないため、テストの方が面倒でした。そこで、curl を介したフォーム送信をシミュレートする簡単なスクリプトを作成しました。データは配列と文字列の 2 つの方法で送信できます。
  1. /**
  2. * Class SimulantForm シミュレーション フォーム
  3. */
  4. class SimulantForm {
  5. /**
  6. * @var 送信するページのURL
  7. */
  8. protected $_url;
  9. /**
  10. * @var resourcecurl_init()によって返されるcurlハンドル
  11. */
  12. protected $_ch ;
  13. /**
  14. * フォームを初期化します
  15. * @param $_url URL
  16. */
  17. public function __construct($_url) {
  18. $this->gt;_ch =curl_init();
  19. $this->setUrl($_url);
  20. curl_setopt($this- >_ch, CURLOPT_RETURNTRANSFER, 1);
  21. }
  22. /**
  23. *getメソッド経由で送信
  24. * @param配列|文字列フォームデータ
  25. * @returnmixed
  26. */
  27. public function get($_data = '') {
  28. $this->_url .= $this->_setGetData($ _data);
  29. $this->setUrl($this->_url);
  30. $result =curl_exec($this->_ch);
  31. curl_close($this->_ch);
  32. return $result;
  33. }
  34. /**
  35. * 投稿経由で送信
  36. * @param array|string form data
  37. * @returnmixed
  38. */
  39. public function post($_data) {
  40. curl_setopt($this->_ch, CURLOPT_POST, 1);
  41. $this->_setPostData($_data);
  42. $result =curl_exec($this->_ch);
  43. curl_close($this->_ch);
  44. return $result;
  45. }
  46. /**
  47. * エラーメッセージを返す
  48. * @return array array[0]: エラー番号、array[1]: エラーメッセージ
  49. */
  50. public function getLastError() {
  51. return array( curl_errno($this->_ch)、curl_error($this->_ch));
  52. }
  53. /**
  54. * SETOPT_COOKIEFILE を設定します
  55. * @param string $_cookieFile ファイルの実際のパス
  56. */
  57. public function setCookieFile($_cookieFile) {
  58. curl_setopt($this-> _ch, CURLOPT_COOKIEFILE, $_cookieFile);
  59. }
  60. /**
  61. * SETOPT_COOKIEJAR を設定します
  62. * @param string $_cookieFile ファイルの実際のパス
  63. */
  64. public function setCookieJar($_cookieFile) {
  65. curl_setopt($this->_ch, CURLOPT_COOKIEJAR, $_cookieFile);
  66. }
  67. / **
  68. * URLを設定します
  69. * @param $_url
  70. */
  71. 保護関数 setUrl($_url) {
  72. $this->_url = $_url;
  73. curl_setopt($this->_ch, CURLOPT_URL, $_url);
  74. }
  75. /**
  76. * getモードで送信するときにデータを設定します
  77. * @param $_get_data 文字列または配列
  78. * @returnmixed
  79. */
  80. 保護された関数 _setGetData($_get_data) {
  81. if(is_array($_get_data)) {
  82. return $this->_getDataToString($_get_data);
  83. } elseif(is_string($_get_data)) {
  84. return $_get_data;
  85. }
  86. }
  87. /**
  88. * 投稿モードで送信するときにデータを設定します
  89. * @param array|string $_post_data
  90. */
  91. protected function _setPostData ($_post_data) {
  92. curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $_post_data);
  93. }
  94. /**
  95. * 配列形式で送信された情報を get メソッド経由で送信するための文字列に解析します
  96. * @param array $_get_data
  97. * @return string
  98. */
  99. protected function _getDataToString(array $_get_data) {
  100. return '?' . http_build_query($_get_data); //1階を参照、http_build_query関数に置き換えると、oschinaの編集機能が本当にひどいです。
  101. }
  102. }
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:社内管理体制次の記事:社内管理体制