PDA

View Full Version : سوال: مشکل با شیء گرایی در php



jalalx
چهارشنبه 23 تیر 1389, 21:21 عصر
لطف کنید یه نگاهی به این کد بندازید و بگید چرا کار نمی کنه؟ :گریه:
من برنامه نویسی شی گرا رو خیلی دوست دارم و در تمام زبان هایی که بلدم از الگو های شیء گرا استفاده کردم. پس لطفا روش رو عوض نکنید.
آپاچی و mysql رو به طور مستقل تست کردم کار می کنند. وقتی به صورت شیء گرا می نویسم PHP 5 بدون خطا هیچی نشون نمی ده! :عصبانی::عصبانی++: با تابع سازنده هم مشکل دارم که باشه برای بعد!!!
پیشاپیش ممنون!



class Personnel
{
protected string $server;
protected string $userid;
protected string $password;
protected var $handler;

public function connect($server, $userid, $password)
{
echo 'connecting...';
$this->server = $server;
$this->userid = $userid;
$this->password = $password;

$handler = mysql_connect($server, $userid, $password);
}

public function disconnect()
{
echo 'disconnecting...';
mysql_close($this->handler);
$this->handler = NULL;
}

public function execute(string $query)
{
echo 'inserting...';
mysql_query($query, $this->handler);
}
}

echo 'Initializing...';

Personnel $personnel = new Personnel();
$personnel.connect('localhost', 'root', '123');

$result = $personnel.execute("INSERT INTO 'example'.'personnel' (fFirstName, fLastName, fComment)VALUES('jalal', 'amini robaty', 'no comment!')");

if($result)
echo 'Operation success!';
else
echo 'Operation fail!';

امیـرحسین
چهارشنبه 23 تیر 1389, 22:03 عصر
شما از علاقه زیاد به شی گرایی در زبانهای مختلف، یک تلفیق از همشون رو اینجا پیاده کردید! نمایش Errorها رو فعال کنید تا کلی خطای Syntax بگیرید!
این نمونه صحیح کد شماست. با کد خودتون مقایسه کنید. یک تابع سازنده خالی هم بهش اضافه کردم.
class Personnel
{
protected $server;
protected $userid;
protected $password;
protected $handler;

public function __construct() {

}

public function connect($server, $userid, $password)
{
echo 'connecting...';
$this->server = $server;
$this->userid = $userid;
$this->password = $password;

$handler = mysql_connect($server, $userid, $password);
}

public function disconnect()
{
echo 'disconnecting...';
mysql_close($this->handler);
$this->handler = NULL;
}

public function execute($query)
{
echo 'inserting...';
return mysql_query($query, $this->handler);
}
}

echo 'Initializing...';

$personnel = new Personnel();
$personnel->connect('localhost', 'root', '');
$result = $personnel->execute("INSERT INTO 'example'.'personnel' (fFirstName, fLastName, fComment)VALUES('jalal', 'amini robaty', 'no comment!')");

if($result)
echo 'Operation success!';
else
echo 'Operation fail!';

صابر طهماسبی
چهارشنبه 23 تیر 1389, 22:07 عصر
سلام
بنده تا الان ندیدم که در php برای متغیرها نوع تعریف بشه؟
بنده ندیدم شاید جدیدا باشه
کد را دیدم ولی آن را تست نکردم
فکر کنم مشکل اینجا باشه که تعریف نوع انجام دادید مثلا :


protected string $server;

را باید به صورت زیر بنویسید:





protected $server;

و :


execute(string $query)

را به صورت زیر :


execute($query)

jalalx
پنج شنبه 24 تیر 1389, 09:56 صبح
شما از علاقه زیاد به شی گرایی در زبانهای مختلف، یک تلفیق از همشون رو اینجا پیاده کردید!

خیلی ممنون! مثل اینکه بد جوری قاطی کردم!!! :اشتباه: اما من توی manual خود php دیدم که برای متغیر ها نوع تعریف کرده بود، هرچند گفته بود اختیاریه.
راستی چه موقع از self استفاده می شه و چه موقع از $this ؟

صابر طهماسبی
پنج شنبه 24 تیر 1389, 10:16 صبح
سلام
self برای دسترسی به متد ها و متغیرهایی است که بصورت static تعریف شده اند و this برای دسترسی به متدها و متغیرهای تعریف شده به صورت عادی می باشد.