お世話になってます。
今あるツール開発において、構文エラーが出現して困っています。
何が原因なのかがわからないため、お分かりの方おられましたら返信下さい。
エラー名:syntax error, unexpected 'urlmaker' (T_VARIABLE)
・コントローラー側
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; define("HTTP_TRY_TIMER", 30); define("HTTP_TRY_NUM", 10); class AWS_Data_GetController extends Controller { public function Dataget_Tool(Request $req){ //JPN限定 $country = 'JP'; $Seller_Id = str_replace("SELLER_ID:","",$req->Seller_Id); console.log($Seller_Id); $params=array(); $params['AWSAccessKeyId'] = 'ABCDEFGHIJ'; $params['SellerId'] = '123456789'; $params['SignatureMethod'] = 'HmacSHA256'; $params['SignatureVersion'] = '2'; $params['Version'] = '2011-10-01'; $params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z'); // Timeは毎回Checkされる【ISO8601,UTC(GMT)】 $params['Action'] = 'GetMatchingProductForId'; $params['MarketplaceId'] = 'A34567RTE'; $params['IdType'] = 'EAN'; $params['IdList.Id.1'] = '4580550620546'; $baseurl= 'https://mws.amazonservices.jp/'; $baseurl = $baseurl . 'Products/' . $params['Version']; $secret_access_key='cbdhjsudkiddssdfsddfds/HnTml'; //URLの作成 $url = makeUrl($params, $baseurl, $secret_access_key, 2); //HTMLアクセスを行う $amazon_xml = accessHttp( $url, 0 ); // 0:XML解析要 foreach($amazon_xml->GetMatchingProductForIdResult as $response){ //$getTitle = $response->Products->Product->AttributeSets->ns2_ItemAttributes->ns2_Title; $get_ASIN = $response->Products->Product->Identifiers->MarketplaceASIN->ASIN; } printf ("SUCCESS : MWS GetMatchingProduct completed! Title=%s\n", $getASIN ); echo "'".$getTitle."'"; exit; } // HTTPアクセスを行う処理(HTTP_TRY_NUM回のリトライを行う) function accessHttp( $url, $jobType ) { for ($i=1; $i <= HTTP_TRY_NUM; $i++) { $http_response_header = null; $response = @file_get_contents( $url ); // HTTPエラーの検出 $pos = strpos($http_response_header[0], '200'); if ($pos === false) { // エラー処理 if (strstr($http_response_header[0], '400 Bad Request')) { // ERROR printf ("ERROR : HTTP ACCESS 400!\n"); exit; } elseif (strstr($http_response_header[0], '403 Forbidden')) { // ERROR printf ("ERROR : HTTP ACCESS 403!\n"); exit; } elseif (strstr($http_response_header[0], '404 NotFound')) { printf ("ERROR : HTTP ACCESS 404!\n"); // 404はサーバ負荷により発生する可能性あり // exit; } if ( $i == HTTP_TRY_NUM ){ exit; } // HTTPがOK時 } else { // XML解析不要時 "$jobType = 1" if ( $jobType == 1 ) { return $response; } // MWSエラーのチェック $response = preg_replace("/ns2:/", "ns2_", $response); $amazon_xml = simplexml_load_string($response); if ( isset($amazon_xml->Error->Message) ) { // エラー処理 printf ("ERROR : HTTP ACCESS MWS i=%d!\n", $i ); // ERROR if ( $i == HTTP_TRY_NUM ){ exit; } } else { return $amazon_xml; } } //Sleep (HTTP_TRY_TIMER) Seconds sleep(HTTP_TRY_TIMER); } } //URLを作る処理 function makeUrl($params, $baseurl, $secret_access_key, $jobType) { // パラメータの順序を昇順に並び替えます ksort($params); \Debugbar::info($params); // URLの追加部分を作成します $option_string = ''; foreach ($params as $k => $v) { // URLの追加部分をURLエンコードして&でつなげる。 $option_string .= '&'.urlencode_rfc3986($k).'='.urlencode_rfc3986($v); } // 最初の"&"のみ削除 $option_string = substr($option_string, 1); // URL作成 $parsed_url = parse_url($baseurl); if ( $jobType == 2 ){ $string_to_sign = "POST\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$option_string}"; }else{ $string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$option_string}"; } echo $string_to_sign; // - HMAC-SHA256 を計算し、BASE64 エンコード $signature = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_access_key, true)); // - リクエストの末尾に署名を追加 $url = $baseurl.'?'.$option_string.'&Signature='.urlencode_rfc3986($signature); // URLを返す return $url; } // RFC3986 形式で URL エンコードする関数 function urlencode_rfc3986($str){ $urlmaker = str_replace('%7E', '~', rawurlencode($str)); return $urlmaker;----->>ここでエラー } }
Laravel特有でもなんでもないPHPのよくある構文エラーですがそのあたりは認識されてますか?
あとタイトルと内容でエラー内容合致していません。どちらでしょうか
タグに[PHP]を指定ください。
お世話になってます。根本的な問題ということでしょうか?
根本的というより初歩的な構文エラーということです。
基本からやり直せということでしょうか?
解決したら解決済みにしておいてください
んー。これくらいで困り悩む段階だとフレームワークはかなり厳しいと思いますよ。
最低でもLaravel固有の問題かそうでないかくらいは切り分けられないと
ではどうしろと言いたいの?やめた方が良いですよとでも言いたい感じですね?
やめたければどうぞ。私はとめませんし、そもそもやめろと言ったつもりもありません。
「現状ではフレームワークはかなり厳しい。最低でもLaravel固有の問題かそうでないかくらいは切り分けられないと」で伝わると思ったのですが。
おはようございます。いえそのつもりは全くない。
そのつもりとは?
なお、こちらは煽るような意図は全くなく、あくまできちんとフレームワークに進むには必要なところが欠けているという指摘に終始しているのみです。
特にLaravelは求められるPHPのスキルが他のフレームワークより高いので、今回の質問にあるようなことで質問しているようだとLaravel自体の学習が進まずストレスにしかなりません。
フレームワーク特有の問題か、言語本体の問題かを切り分けられるようになるくらいまでスキルを高めてから学習に入ったほうが良いですし、
そこまで高められてない人がLaravelに入って一切通用せず成長せず質問し続けている現状を見てきています。
あとは自身がどうなりたいかで決めたら良いです。
そのつもり⇒やめるつもりはないという意味です。
再度、基本に戻りphpの基礎からやるつもりです。
理解が半端なところは大分わかってきてるので。
資金に余裕がありそうならPHP技術者認定試験を受けてみるのもありです。(フレームワークの問題も1つ2つ出ますが)初級とれれば十分自信になるでしょう。
回答1件
あなたの回答
tips
プレビュー