سلام خسته نباشید
من داشتم یک ویلاگ با 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;
}
ممنون میشم راهنمایی کنید
توی خط 5 شما گفتید که از کلاس admin ارث بری بشه اما کلاس پیدا نیمشه .
شاید اسم کلاس چیز دیگه هست یا توی پوشه admin نیست و یا namespace غلط هست .
بهتر است که use کنیدش .
مثل :
use Admin\Admin;
از حل کردن مشکلات دیگران خوشحال میشم ولی باز هم
بهتر قبل از اینکه سوال بپرسید
اول متن error رو بخونید (اگه نمیتونید از ترجمه گوگل استفاده کنید) . اگر باز هم مشکل حل نشد
توی google متن error رو جست وجو کنید . اگر باز هم مشکل حل نشد
در همین roocket و یا stack overflow بپرسید
خوشحال شدم اگر کمکی کردم
سلام
$this->currentDomain = CURRENT_DOMAIN;
$this->basePath = BASE_PATH;
این کد به این معناست که از ورودی مقداری رو که گرفتی بریز داخل این متغییری که داخل object وجود دارد اما شما اون ها رو تعریف نکردید
پس این کد رو به اول class خودتون اضافه کنید :
public currentDomain ;
public basePath ;
موفق و پیروز باشید
سلام ممنون اون مشکل بر طرف شد فقط یک ارور دیگر در هنگام اجرا وجود دارد
و این هم کد Category.php :
<?php
namespace Admin;
class Category extends Admin{
public function index()
{
}
}
توی خط 5 شما گفتید که از کلاس admin ارث بری بشه اما کلاس پیدا نیمشه .
شاید اسم کلاس چیز دیگه هست یا توی پوشه admin نیست و یا namespace غلط هست .
بهتر است که use کنیدش .
مثل :
use Admin\Admin;
از حل کردن مشکلات دیگران خوشحال میشم ولی باز هم
بهتر قبل از اینکه سوال بپرسید
اول متن error رو بخونید (اگه نمیتونید از ترجمه گوگل استفاده کنید) . اگر باز هم مشکل حل نشد
توی google متن error رو جست وجو کنید . اگر باز هم مشکل حل نشد
در همین roocket و یا stack overflow بپرسید
خوشحال شدم اگر کمکی کردم
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟