راکت
حل شده

ارور پی اچ پی

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;
        }

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

ثبت پرسش جدید

پاسخ‌ها

3
erfan
erfan
@erfan.h.010011

تخصص: gray hat

بهترین پاسخ

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

use Admin\Admin;

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

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

erfan
erfan
@erfan.h.010011

تخصص: gray hat

سلام

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

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

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

    public currentDomain ;
    public basePath ;

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

موب
موب
@mobpaydar

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

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

<?php

namespace Admin;

class Category extends Admin{ 

        public function index()
        {
        }
}

شاید پاسخ شما همین‌جا باشد

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

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