@mhyeganeh
@gomnam
سلام
من دارم ارسال پیامک انجام میدم و زمانی که ارسال میزنم خطای Call to a member function sendsms() on string را میده
خط $sendClass->sendsms($username, $password, $from, $numbers, $txts); را خطا میده و میگه به صورت رشته میزنی .
خب من اومدم کلاس را در پوشه helpers تعریف کردم و رجیسترش کردم و کلاس را به درستی میشناسه.
مشکل از چیه ؟
نکته : توی کد متغیرهای username و password را به صورت هارد کد فعلا برای تست زدم
کد بخش store
public function store(Request $request) { $username = '********'; // required $password = '********'; // required $from = $request ['from']; // required $sms = $request ['message']; // not required // $api = api::where('id', '=', $request->from)->firstOrFail(); $numbers = explode("\r\n", $request->numbers); $insert_data = collect(); foreach ($numbers as $value) { $insert_data->push([ 'number' => $value, 'user_id' => auth()->user()->id, 'status' => 'send', 'text' => $request->message, 'from' => $request['from'], 'created_at' => Carbon::now(), 'updated_at' => Carbon::now(), ]); } foreach ($insert_data->chunk(100) as $chunk) { foreach ($numbers as $p) { $txts [$p] = $sms; } // DB::table('sms')->insert($chunk->toArray()); $sendClass = \App\Helpers\SMSTools:: class; $sendClass->send_sms($username, $password, $from, $numbers, $txts); } return redirect()->back()->with('success', 'ارسال انجام شد'); }
با سلام .
شما باید یک آبجکت از کلاس SMSTools
داشته باشید تا متد send_sms
رو روش صدا بزنید.
با نوع صدا زدنتون شما دارید اسم کلاس رو با namespace کاملش میریزید داخل متغیر... در واقع متغیر sendClass
شما به اینصورته:
$sendClass = '\App\Helpers\SMSTools'; '\App\Helpers\SMSTools'->send_sms(); // ?!?! impossible -> error
و خوب قاعدتا نمیتونید متدی رو روی string صدا بزنید و نیاز به ساختن ابجکت از کلاس دارید.
(اگر در درک مطالب مشکل داشتید پیشنهاد میکنم مباحث شی گرایی | OOP رو مجددا مرور کنید)
موفق باشید
همون طوری که بالا اشاره شد ابتدا باید با new یک آبجکت از کلاس بسازید و بعد متد رو صدا کنید:
//مثلا اینجوری: $sendClass = new \App\Helpers\SMSTools(); $sendClass->send_sms($username, $password, $from, $numbers, $txts);
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟