• 1400/02/23

صدا زدن Session ها بصورت استاتیک :

سلام استاد امیدوارم که سلامت باشی ،

namespace System\Session;

class Session{

  public function set($name, $value){

    $_SESSION[$name= $value;

  }

  public function get($name){

    return isset($_SESSION[$name]) ? $_SESSION[$name: false;

  }

  public function remove($name){

    if(isset($_SESSION[$name])){

      unset($_SESSION[$name]);

    }

  }

  public static function __callStatic($name, $arguments){

    $instance = new self();

    return call_user_func_array([$instance,$name], $arguments);

  }

}

وقتی در  کلاس Auth سشن ها رو بصورت استاتیک صدا میزنیم خطای زیرو میده

Uncaught Error: Non-static method System\Session\Session::get() cannot be called statically in E:\xampp\htdocs\mvc\system\Auth\Auth.php:12

تماما هم کدهای شما رو کپی کردم ولی بازم همین خطا رو میده

  • 1400/02/23
  • ساعت 14:50

با سلام خدمت شما همراه عزیز

 

 

یکی از عزیزان مشکل شمارو داشتن و حل کردن

 

در بخش سوالات بگردید پیدا میکنید


  • 1400/02/23
  • ساعت 14:56

سلام بله استاد دیدمش ولی سوالش بدون پاسخ ، بسته شده بود


  • 1400/02/23
  • ساعت 14:57

راهنمایی بنده بوده توی سوال اون زمان و ایشونم گفتن که انجام دادن و درست شده

 

شاید سوال رو اشتباه پیدا کردید


  • 1400/02/23
  • ساعت 15:04

استاد سوالم این هستش که بسته شده

https://toplearn.com/ShowQuestion/45254/auth-%26amp-;%26amp-;-session

و یه سوال دیگه هم راجع به سشن هست که شما با ویس جواب دادید ولی منظورم اون نیست


  • 1400/02/23
  • ساعت 15:07

استاد اینا هم کد Auth هستن ، گفتم شاید باید ببینیشون


 

namespace System\Auth;


 

use App\User;

use System\Session\Session;


 

class Auth{

  private $redirectTo = "/login";


 

  private function userMethod(){

    if(!Session::get('user')){

      return redirect($this->redirectTo);

    }

    $user = User::find(Session::get('user'));

    if(empty($user)){

      Session::remove('user');

      return redirect($this->redirectTo);

    }else{

      return $user;

    }

  }

  private function checkMethod(){

    if(!Session::get('user')){

      return redirect($this->redirectTo);

    }

    $user = User::find(Session::get('user'));

    if(empty($user)){

      Session::remove('user');

      return redirect($this->redirectTo);

    }else{

      return true;

    }

  }

  private function checkLoginMethod(){

    if(!Session::get('user')){

      return false;

    }

    $user = User::find(Session::get('user'));

    return empty($user? false : true;

  }

  private function loginByEmailMethod($email, $password){

    $user = User::select()->where('email',$email)->get();

    if(empty($user)){

      error('login','کاربر مورد نظر وجود ندارد');

      return false;

    }

    if(password_verify($password, $user[0]->password&& $user[0]->is_active == 1){

      Session::set("user", $user[0]->id);

      return true;

    }else{

      error("login", "کلمه عبور اشتباه است");

      return false;

    }

  }

  private function loginByIdMethod($id){

    $user = User::find($id);

    if(empty($user)){

      error('login','کاربر مورد نظر وجود ندارد');

      return false;

    }else{

      Session::set("user", $user->id);

      return true;

    }

  }

  private function logoutMethod(){

    Session::remove('user');

  }

  public function __call($name, $arguments){

    return $this->methodColler($name, $arguments);

  }

  public static function __callStatic($name, $arguments){

    $instance = new self();

    return $instance->methodColler($name, $arguments);

  }

  private function methodColler($method, $arguments){

    $suffix = 'Method';

    $methodName = $method.$suffix;

    return call_user_func_array([$this, $methodName], $arguments);

  }

}


  • 1400/02/23
  • ساعت 15:09

Non-static method

 

 


  • 1400/02/23
  • ساعت 15:09

این متن خطارو سرچ کنید خیلی ساده راه حل گفته شده

باید متد رو تغییر بدید نحوه تعریفش رو


  • 1400/02/23
  • ساعت 15:39

استاد نمیشه یه رحمی کنی یه توضیح بدی خیلی ممنونت میشم

 


  • 1400/02/23
  • ساعت 15:43

عرض‌کردم‌دیگه

 

استتیکی صدا نزنید


  • 1400/02/23
  • ساعت 15:47

استاد به این صورت که انجام دادم و درست شد

ولی سوالم اینه که چرا این استاتیک صدا زدن برای بعضیا درست کار میکنه و برای بعضیا نه ؟ ایراد دقیقا از کجاست ؟ 

خیلی ممنون استاد


  • 1400/02/23
  • ساعت 15:47

بعضا بخاطر ورژن php هست


logo-samandehi