PDA

View Full Version : سوال: اررور new هنگام ساخت شی



lordofphp
پنج شنبه 03 خرداد 1397, 09:08 صبح
سلام من کد زیرو نوشتم اما از شی سازیش ک درسته بنظرم ایراد میگیره
اررور:
Parse error: syntax error, unexpected 'new' (T_NEW) in C:\xampp\htdocs\MWS\Santa\classes\Controller\ShowA rticle.php on line 10



<?php
namespace Controller;
require_once("C:/xampp/htdocs/MWS/Santa/classes/Model/DataBase.php");
//require_once("C:/xampp/htdocs/MWS/Santa/classes/Model/Article.php");
//require_once("C:/xampp/htdocs/MWS/Santa/classes/Model/ShowArticle.php");
//if(file_exists("C:/xampp/htdocs/MWS/Santa/classes/Model/DataBase.php")) { echo'salam';}
class ShowArticle
{
//private $databaseObj = new \DataBase();error new mide chera
public function seeAllArticle()
{
$databaseObj = new \DataBase();
$showArticleModel=new \Model\ShowArticle();
$countOfAllArticle=$showArticleModel->countOfArticle();
for($i=0;$i<$countOfAllArticle;$i++)
{
$article[$i]=array($showArticleModel->showArticle($i));//i=id

}
echo $article[0]['name'];

}

}
?>

charcharkh
پنج شنبه 03 خرداد 1397, 10:44 صبح
ورژن php ؟؟؟

اینا رو ببین
http://osticket.com/forum/discussion/88863/php-parse-error-syntax-error-unexpected-new-t-new-in-emails-php

https://github.com/poweradmin/poweradmin/issues/315

lordofphp
پنج شنبه 03 خرداد 1397, 11:49 صبح
php مو بروز کردم به اخرین نسخه حالا ارروش فرق کرده درست خط 12 گیر میده


Fatal error: Constant expression contains invalid operations in C:\xampp\htdocs\MWS\Santa\classes\Controller\ShowA rticle.php on line 10

charcharkh
پنج شنبه 03 خرداد 1397, 13:12 عصر
توی خط Controller\ShowA rticle.php on line 10 چی زدی ؟


Constant رو چطوری نوشتی ؟؟!!

lordofphp
پنج شنبه 03 خرداد 1397, 13:16 عصر
توی خط Controller\ShowA rticle.php on line 10 چی زدی ؟


Constant رو چطوری نوشتی ؟؟!!





private $databaseObjs = new \DataBase();//error new mide chera

یه سوال وقتی بخوایم تو یکلاس از کلاس دیگه شی بسازیم فرق میکنه داستانش؟ من الان خواستم تو کلاس شو آرتیکل از کلاس دیتابیس شی بسازم ک کلاس شو ارتیکل نیم اسپیس کنترلر داره اما کلاس دیتابیس نیم اسپیسی نداره

charcharkh
پنج شنبه 03 خرداد 1397, 13:19 عصر
بایست namespace بزنی

charcharkh
پنج شنبه 03 خرداد 1397, 13:22 عصر
وقتی داری پشت کلاست یه بک اسلش میزاری

new \DataBase()

اینو به معادل یه اسپیس داره تلقی میکنه برای اینکه مفاهیم
namespace رو بهتر درک کنید شبیه به یک دراور یا کمد که کشو داره فرض کنید تا تصورتون از namespace بهتر باشه

ببخشید بهتر از این دیگه نتونستم توضیح بدم

lordofphp
پنج شنبه 03 خرداد 1397, 13:23 عصر
نه بک اسلش گذاشتم تا ب پی اچ پی بفهمونم کلاس دیتابیس از نیم اسپیس خودش نیست یجا اینطوری خونده بودم الان اررور :
Fatal error: Namespace declaration statement has to be the very first statement or after any declare call in the script in C:\xampp\htdocs\MWS\Santa\classes\Model\DataBase.p hp on line 2
میده
اینم کد دیتابیسم ک نیم اسپیسم براش زدم


<?php
namespace Model;
class DataBase
{
private $host='localhost';
private $username='root';
private $password='';
private $dbname='test';
private $connection;

function __construct()
{
echo'salam';
$this->connectDataBase();//برای دسترسی به متدهای درون کلاس باید اینگونه عمل شود
echo's';

}
function connectDataBase()
{
$this->connection=mysqli_connect($this->host,$this->username,$this->password,$this->dbname);
if(mysqli_connect_error())
{
exit('خطا دراتصال به پایگاه داده');
}
}
function query($query)
{
echo $query;
$setQuery=mysqli_query($this->connection,$query);
if(!$setQuery)
{
echo'پرس و جوی مورد نظر انجام نشد';
}


}
function closeDataBase()
{
mysqli_close();
}
function getFetchData($query)
{
return mysqli_fetch_assoc($query);

}
public function getConnection()
{
return $this->connection;
}
public function getFetchArray($query)
{
return mysqli_fetch_array($query,MYSQLI_NUM);
}

}
?>

charcharkh
پنج شنبه 03 خرداد 1397, 13:26 عصر
اون فاصله بین ؟> و namespace رو پاک کن ابنجوری بزن

بدون فاصله



<?php
namespace App\Http\Controllers\Auth;

lordofphp
پنج شنبه 03 خرداد 1397, 13:28 عصر
پستت خالیه؟

charcharkh
پنج شنبه 03 خرداد 1397, 13:30 عصر
نه پر شد رفرش بزن


بعد ببینم اینکد فایلت رو چی گذاشتی ؟؟؟

You must change the file encoding to ANSI. I was using Notepad++ with encoding UTF-8 and had the same problem. The problem disappeared after I change the file encoding to ANSI!

با Notepad++ بازش کن و اینکد رو روی UTF-8 without BOM بزن

lordofphp
پنج شنبه 03 خرداد 1397, 13:33 عصر
نه فایده ای نداره

charcharkh
پنج شنبه 03 خرداد 1397, 13:34 عصر
<?php//<- anything here?


I fix it this way when I started doesn't matter utf8 just this way open <?php in the first line in the editor in my case sublime text and the namespace writte in the second line


2 <?php namespace mynamespace; //you should writte youe namespace down where you open php here should be in line 3 here I make the error cuz I started open from line 2 <?php


1 <?php namespace mynamespace; // I started from line 1 <?php it WORK

charcharkh
پنج شنبه 03 خرداد 1397, 13:36 عصر
اینم ببین

https://laracasts.com/discuss/channels/laravel/namespace-declaration-statement-has-to-be-the-very-first-statement?page=1

lordofphp
پنج شنبه 03 خرداد 1397, 13:36 عصر
<?php namespace Model; درست لاین اول مینویسم هیچی دیگه نمینویسم بازم اررور دکلاریشن میده




Fatal error: Namespace declaration statement has to be the very first statement or after any declare call in the script in C:\xampp\htdocs\MWS\Santa\classes\Model\DataBase.p hp on line 2

charcharkh
پنج شنبه 03 خرداد 1397, 13:39 عصر
any desk داری ؟

lordofphp
پنج شنبه 03 خرداد 1397, 13:40 عصر
any desk chie?
با زمپ اجراش میکنم

charcharkh
پنج شنبه 03 خرداد 1397, 13:40 عصر
اگر میخوای برات ریموت بشم درستش کنم البته اگر دوست اری ؟!!!

charcharkh
پنج شنبه 03 خرداد 1397, 13:42 عصر
از اینجا بگیرش بعد

http://p30download.com/fa/entry/73468/

charcharkh
پنج شنبه 03 خرداد 1397, 13:42 عصر
بعد پسورد رو توی پیام خصوص بهم بده اینجا نزاری بهتره

charcharkh
پنج شنبه 03 خرداد 1397, 13:43 عصر
ویندوز هستی یا لینوکس ؟؟!!

lordofphp
پنج شنبه 03 خرداد 1397, 13:44 عصر
windows am

charcharkh
پنج شنبه 03 خرداد 1397, 13:45 عصر
گرفتی ؟
ای دی رو بده

lordofphp
پنج شنبه 03 خرداد 1397, 13:49 عصر
نه ولش کن مشکل از زمپه احتمالا

lordofphp
پنج شنبه 03 خرداد 1397, 13:53 عصر
یکی یه localhost خوب معرفی میکنه؟

charcharkh
پنج شنبه 03 خرداد 1397, 13:55 عصر
همون زمپ خوبه مشکلت از زمپ نیست از کد هست

lordofphp
پنج شنبه 03 خرداد 1397, 13:58 عصر
نه اخه عادی مینویسم تو خط اول
<?php namespace model;?> همینو مینویسم اررور دکلاریشن میده هیچ چیز دیگم نمینویسم فقط همین

charcharkh
پنج شنبه 03 خرداد 1397, 14:08 عصر
اگر دقیقا همینو نوشتی اشتباه هست

charcharkh
پنج شنبه 03 خرداد 1397, 14:11 عصر
یکبار حروف بزرگ میزنی یه بار کوچک میزنی چه خبره !!! نام فایل رو با چه حروفی نوشتی ؟؟!!

lordofphp
پنج شنبه 03 خرداد 1397, 14:27 عصر
DataBase.php

lordofphp
پنج شنبه 03 خرداد 1397, 15:35 عصر
رو هاست امتحان کردم جواب داد اما رو لوکال هاست جواب نمیده اررور دکلاریشن میده

farhad_shiri_ex
پنج شنبه 03 خرداد 1397, 15:51 عصر
سلام من کد زیرو نوشتم اما از شی سازیش ک درسته بنظرم ایراد میگیره
اررور:
Parse error: syntax error, unexpected 'new' (T_NEW) in C:\xampp\htdocs\MWS\Santa\classes\Controller\ShowA rticle.php on line 10



<?php
namespace Controller;
require_once("C:/xampp/htdocs/MWS/Santa/classes/Model/DataBase.php");
//require_once("C:/xampp/htdocs/MWS/Santa/classes/Model/Article.php");
//require_once("C:/xampp/htdocs/MWS/Santa/classes/Model/ShowArticle.php");
//if(file_exists("C:/xampp/htdocs/MWS/Santa/classes/Model/DataBase.php")) { echo'salam';}
class ShowArticle
{
//private $databaseObj = new \DataBase();error new mide chera
public function seeAllArticle()
{
$databaseObj = new \DataBase();
$showArticleModel=new \Model\ShowArticle();
$countOfAllArticle=$showArticleModel->countOfArticle();
for($i=0;$i<$countOfAllArticle;$i++)
{
$article[$i]=array($showArticleModel->showArticle($i));//i=id

}
echo $article[0]['name'];

}

}
?>



اگر تو ویندوز هستی چر اینطوری include کردی؟




require_once("C:/xampp/htdocs/MWS/Santa/classes/Model/DataBase.php");



بعد چرا اینطوری new کردی؟




$databaseObj = new \DataBase();



خوب این خطا که داره میگه که اشتباه دستوری غیرمنتظره دارید.این کد استفاده کنید.


<?php
namespace Controller;
require_once('C:\xampp\htdocs\MWS\Santa\classes\Mo del\DataBase.php');
//require_once("C:/xampp/htdocs/MWS/Santa/classes/Model/Article.php");
//require_once("C:/xampp/htdocs/MWS/Santa/classes/Model/ShowArticle.php");
//if(file_exists("C:/xampp/htdocs/MWS/Santa/classes/Model/DataBase.php")) { echo'salam';}
class ShowArticle
{
//private $databaseObj = new \DataBase();error new mide chera
public function seeAllArticle()
{
$databaseObj = new DataBase();
$showArticleModel=new ShowArticle();
$countOfAllArticle=$showArticleModel->countOfArticle();
for($i=0;$i<$countOfAllArticle;$i++)
{
$article[$i]=array($showArticleModel->showArticle($i));//i=id

}
echo $article[0]['name'];

}

}
?>

lordofphp
پنج شنبه 03 خرداد 1397, 19:05 عصر
اینکلود اره اشتباه کردم مث اینکه
اما دیتابیس \databae() اینطوری زدم تا بفهمونم ک کلاس دیتابیس تو فایل دیتابیس دات پی اچ پی نیم اسپیسی نداره و با نیم اسپیس خودش ک کنترلره اشتباه نگیره

lordofphp
پنج شنبه 03 خرداد 1397, 19:19 عصر
مشکل حل نشد الانم ک تست کردم کامل روهاستم مشکل داره ! مشکل از کده ولی نمیدونم کجاشه
من برای همه فایلای کنترلر نیم اسپیس کنترلر برای همه فایلای مدل جز دیتایس نیم اسپیس مدل گذاشتم بعد برای شی سازیم مث خط دهکد بالاییم عمل میکنم مثلا اگه نیم اسپیس اصلیرو به کدام کنترلر دادم برای شی سازی از فایل 1 ک از نیم اسپیس مدله اینطوری میکنم


private $obj=new Model\file1();