موب
1 سال پیش توسط موب مطرح شد
3 پاسخ

ارور پی اچ پی

سلام خسته نباشید
من داشتم یک ویلاگ با php مینوشتم که به این مشکل برخورد کردم
ارور در پوشه activities / Admin / Admin.php هست
در index.php متغیری ساخته شده که داخل Admin.php از آنها استفاده کردم
طبق توصیه بعضی از دوستان index.php را داخل Admin.php که تمامی ارور ها در آن قرار دارد include کردم اما نتیجه ای نداد
ارور ها :
Undefined property '$currentDomain'.
Undefined property '$basePath'.

ارور اول در خط 9 Admin.php
ارور دوم در خط 10 Admin.php

Admin.php :

<?php

namespace Admin;

class Admin{

        function __construct()
        {
                $this->currentDomain = CURRENT_DOMAIN;
                $this->basePath = BASE_PATH;
        }

        protected function redirect($url)
        {
                header('Location: '. trim($this->currentDomain, '/ ') . '/' . trim($url, '/ '));
                exit;
        }

        protected function redirectBack()
        {
                header('Location: '. $_SERVER['HTTP_REFERER']);
                exit;
        }

        protected function saveImage($image, $imagePath, $imageName = null)
        {

                if($imageName)
                {
                        $extension = explode('/', $image['type'][1]);
                        $imageName = $imageName . '.' . $extension;
                }
                else{
                        $extension = explode('/', $image['type'][1]);
                        $imageName = date("Y-m-d-H-i-s") . '.' . $extension;
                }

                $imageTemp = $image['tmp_name'];
                $imagePath = 'public/' . $imagePath . '/';

                if(is_uploaded_file($imageTemp))
                {
                        if(move_uploaded_file($imageTemp, $imagePath . $imageName)){
                                return $imagePath . $imageName;
                        }
                        else{
                                return false;
                        }
                }
                else{
                        return false;
                }

        }

        protected function removeImage($path)
        {
                $path = trim($this->basePath, '/ ') . '/' . trim($path, '/ ');
                if(file_exists($path))
                {
                        unlink($path);
                }
        }

}

index.php

<?php

//session start
session_start();

//config
define('BASE_PATH', __DIR__);
define('CURRENT_DOMAIN', currentDomain() . '/project');
define('DISPLAY_ERROR', true);
define('DB_HOST', 'localhost');
define('DB_NAME', 'project');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');

require_once 'database/DataBase.php';
require_once 'database/CreateDB.php';
require_once 'activities/Admin/Category.php';
// $db = new database\Database();
// $db = new database\CreateDB();
// $db->run();

// uri('admin/category', 'Category', 'index');
// uri('admin/category/store', 'Category', 'store', 'POST');
function uri($reservedUrl, $class, $method, $requestMethod = 'GET') 
{

    //current url array
    $currentUrl = explode('?', currentUrl())[0];
    $currentUrl = str_replace(CURRENT_DOMAIN, '', $currentUrl);
    $currentUrl = trim($currentUrl, '/');
    $currentUrlArray = explode('/', $currentUrl);
    $currentUrlArray = array_filter($currentUrlArray);

    //reserved Url array
    $reservedUrl = trim($reservedUrl, '/');
    $reservedUrlArray = explode('/', $reservedUrl);
    $reservedUrlArray = array_filter($reservedUrlArray);

        if(sizeof($currentUrlArray) != sizeof($reservedUrlArray) || methodField() != $requestMethod)
        {
                return false;
        }

        $parameters = [];
        for($key = 0; $key < sizeof($currentUrlArray); $key++)
        {
                if($reservedUrlArray[$key][0] == "{" && $reservedUrlArray[$key][strlen($reservedUrlArray[$key]) - 1] == "}")
                {
                        array_push($parameters, $currentUrlArray[$key]);
                }
                elseif($currentUrlArray[$key] !== $reservedUrlArray[$key])
                {
                        return false;
                }
        }

        if(methodField() == 'POST')
        {
                $request = isset($_FILES) ? array_merge($_POST, $_FILES) : $_POST;
                $parameters = array_merge([$request], $parameters);
        }

        $object = new $class;
        call_user_func_array(array($object, $method), $parameters);
        exit();
}
// admin/category/edit/{id} reserved url
// admin/category/delete/{id} reserved url
// admin/category/edit/5 current url 
// admin/category/edit/5 current url 
// uri('admin/category', 'Category', 'index');

//helpers

function protocol() {
     return  stripos($_SERVER['SERVER_PROTOCOL'], 'https') === true ? 'https://' : 'http://'; 
}

function currentDomain()
 {
        return protocol() . $_SERVER['HTTP_HOST'];
}

function asset($src){

        $domain = trim(CURRENT_DOMAIN, '/ ');
        $src = $domain . '/' . trim($src, '/');
        return $src;
}

function url($url){

        $domain = trim(CURRENT_DOMAIN, '/ ');
        $url = $domain . '/' . trim($url, '/');
        return $url;
}

function currentUrl()
{
        return currentDomain() . $_SERVER['REQUEST_URI'];
}

function methodField()
{
        return $_SERVER['REQUEST_METHOD'];
}

function displayError($displayError)
{

        if($displayError)
        {
                ini_set('display_errors', 1);
                ini_set('display_startup_errors', 1);
                error_reporting(E_ALL);
        }
        else
        {
                ini_set('display_errors', 0);
                ini_set('display_startup_errors', 0);
                error_reporting(0);
        }

}

displayError(DISPLAY_ERROR);

global $flashMessage;
if(isset($_SESSION['flash_message'])){
        $flashMessage = $_SESSION['flash_message'];
        unset($_SESSION['flash_message']);
}

function flash($name, $value = null)
{
        if($value === null){
                global $flashMessage;
                $message = isset($flashMessage[$name]) ? $flashMessage[$name] : '';
                return $message;
        }
        else{
                $_SESSION['flash_message'][$name] = $value;
        }

}
// flash('login_error', 'ورود با خطا مواجه شد');
// flash('cart_success', 'محصول با موفقیت به سبد خرید شما اضافه شد');
// echo flash('login_error');
// echo flash('cart_success');

function dd($var){
    echo '';
    var_dump($var);
    exit;
}

// category

uri('admin/category', 'Admin\Category', 'index');
uri('admin/category/create', 'Admin\Category', 'create');
uri('admin/category/store', 'Admin\Category', 'store', 'POST');
uri('admin/category/edit/{id}', 'Admin\Category', 'edit');
uri('admin/category/update/{id}', 'Admin\Category', 'update', 'POST');
uri('admin/category/delete/{id}', 'Admin\Category', 'delete');

echo '404 - page not found';

ارور در این بخش از Admin.php رخ داده :

function __construct()
        {
                $this->currentDomain = CURRENT_DOMAIN;
                $this->basePath = BASE_PATH;
        }

ممنون میشم راهنمایی کنید


ثبت پرسش جدید
erfan
تخصص : gray hat
@erfan.h.010011 1 سال پیش مطرح شد
0

توی خط 5 شما گفتید که از کلاس admin ارث بری بشه اما کلاس پیدا نیمشه .
شاید اسم کلاس چیز دیگه هست یا توی پوشه admin نیست و یا namespace غلط هست .
بهتر است که use کنیدش .
مثل :

use Admin\Admin;

از حل کردن مشکلات دیگران خوشحال میشم ولی باز هم
بهتر قبل از اینکه سوال بپرسید
اول متن error رو بخونید (اگه نمیتونید از ترجمه گوگل استفاده کنید) . اگر باز هم مشکل حل نشد
توی google متن error رو جست وجو کنید . اگر باز هم مشکل حل نشد
در همین roocket و یا stack overflow بپرسید

خوشحال شدم اگر کمکی کردم


erfan
تخصص : gray hat
@erfan.h.010011 1 سال پیش مطرح شد
0

سلام

                $this->currentDomain = CURRENT_DOMAIN;
                $this->basePath = BASE_PATH;

این کد به این معناست که از ورودی مقداری رو که گرفتی بریز داخل این متغییری که داخل object وجود دارد اما شما اون ها رو تعریف نکردید

پس این کد رو به اول class خودتون اضافه کنید :

    public currentDomain ;
    public basePath ;

موفق و پیروز باشید


موب
@mobpaydar 1 سال پیش مطرح شد
0

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

و این هم کد Category.php :

<?php

namespace Admin;

class Category extends Admin{ 

        public function index()
        {
        }
}

erfan
تخصص : gray hat
@erfan.h.010011 1 سال پیش مطرح شد
0

توی خط 5 شما گفتید که از کلاس admin ارث بری بشه اما کلاس پیدا نیمشه .
شاید اسم کلاس چیز دیگه هست یا توی پوشه admin نیست و یا namespace غلط هست .
بهتر است که use کنیدش .
مثل :

use Admin\Admin;

از حل کردن مشکلات دیگران خوشحال میشم ولی باز هم
بهتر قبل از اینکه سوال بپرسید
اول متن error رو بخونید (اگه نمیتونید از ترجمه گوگل استفاده کنید) . اگر باز هم مشکل حل نشد
توی google متن error رو جست وجو کنید . اگر باز هم مشکل حل نشد
در همین roocket و یا stack overflow بپرسید

خوشحال شدم اگر کمکی کردم


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

ورود یا ثبت‌نام