سلام استاد امیدوارم که سلامت باشی ،
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
تماما هم کدهای شما رو کپی کردم ولی بازم همین خطا رو میده
با سلام خدمت شما همراه عزیز
یکی از عزیزان مشکل شمارو داشتن و حل کردن
در بخش سوالات بگردید پیدا میکنید
سلام بله استاد دیدمش ولی سوالش بدون پاسخ ، بسته شده بود
راهنمایی بنده بوده توی سوال اون زمان و ایشونم گفتن که انجام دادن و درست شده
شاید سوال رو اشتباه پیدا کردید
استاد سوالم این هستش که بسته شده
https://toplearn.com/ShowQuestion/45254/auth-%26amp-;%26amp-;-session
و یه سوال دیگه هم راجع به سشن هست که شما با ویس جواب دادید ولی منظورم اون نیست
استاد اینا هم کد 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);
}
}
Non-static method
این متن خطارو سرچ کنید خیلی ساده راه حل گفته شده
باید متد رو تغییر بدید نحوه تعریفش رو
استاد نمیشه یه رحمی کنی یه توضیح بدی خیلی ممنونت میشم
عرضکردمدیگه
استتیکی صدا نزنید
استاد به این صورت که انجام دادم و درست شد
ولی سوالم اینه که چرا این استاتیک صدا زدن برای بعضیا درست کار میکنه و برای بعضیا نه ؟ ایراد دقیقا از کجاست ؟
خیلی ممنون استاد
بعضا بخاطر ورژن php هست