PDA

View Full Version : استفاده کاربردی از oop؟



yasi_prog
پنج شنبه 17 شهریور 1390, 08:23 صبح
سلام . چرا اینجا همه دم از oop میزننند اما تو عملی یک به من کمک نمیکنه؟؟؟؟؟؟:افسرده:

من یه بار دیگم پرسیدم فک نکنم کسی بلد نباشه!!!! شما چه طور oop رو این همه وقت برا توضیح گذاشتیتد..اما کسی جواب سوال به این مهمی رو نمیده؟؟چرا که صفحات وب همیشه در ارتباط با صفحات دیگه هستند و نمیشه اطلاعات کلاس رو ثابت تو همه ی صفحات حفظ کرد!درسته؟چون new میشه دیگه و...میدونید تو هر لود از بین میره اطلاعات.من میخوام اطلاعات رو ثابت همه جا بتونم استفاده کنم مثل session ها....مگه شما چطور از تعریف کلاس فقط تو یه صفحه استفاده میکنید ارث بری و این چیزا چون مداوم حرکت به صفحات داریم ارزش ندارندLاخه یکی نیست به سوال من جواب بده؟؟؟؟؟؟؟؟؟؟؟؟؟شما چطور از oop استفاده میکنید هی که نمیشه new کرد تو رفت و برگشت!!!!!!!!!!!یه راه داره مثل static تعریف کردن!!!این کار نمیشه ؟؟؟ یکی میگه واسه کلاینت static تعریف نمیشه!!!! یکی کمک کنه.این همه اون بالا میگن oop خوب بگید دیگه چه کارکنم؟؟؟؟مطالب اون بالا رو خوندم به هدفم نرسیدم جست و جو هم کردم..مراجعم نگا کردم.مشگلم اینه بار اول حرفه ای شروع به نوشتن کردم و نمیخوام اطلاعات تو session نگه دارم چون خطرناکه و یه سری مسایل دیگه .میخوام اطلاعات لازم کاربران رو تو کلاس از لحظه ی ورود تا لحظه ی خروج نگه دارم.بگید چی کار کنم؟شما ها چی کار میکنید؟من با خودم فکر کردم امنیتش بالاتره (private) وهم از متد های خوبی براش استفاده کرد.

binyaft
پنج شنبه 17 شهریور 1390, 12:23 عصر
تمام اطلاعات برنامه PHP با رسیدن به آخر برنامه از حافظه رم حذف میشه! به غیر سشن ها که بحث اش جداس و یه سری چیزایی که شاید پشت پرده باشه من ندونم !
ارث بری به این معنی هست که شما یک کلاس داری متشکل از متدها و آبجکت ها بعد حالا میخوای از اون تو یه کلاس دیگه استفاده کنی ، میای از ارث بری استفاده میکنی! اینجا که مشکلی پیش نمیاد ، میاد ؟ یعنی کلا چه بدی ای داره ؟

Mr.Moghadam
پنج شنبه 17 شهریور 1390, 15:15 عصر
سلام . چرا اینجا همه دم از oop میزننند اما تو عملی یک به من کمک نمیکنه؟؟؟؟؟؟:افسرده:

من یه بار دیگم پرسیدم فک نکنم کسی بلد نباشه!!!! شما چه طور oop رو این همه وقت برا توضیح گذاشتیتد..اما کسی جواب سوال به این مهمی رو نمیده؟؟چرا که صفحات وب همیشه در ارتباط با صفحات دیگه هستند و نمیشه اطلاعات کلاس رو ثابت تو همه ی صفحات حفظ کرد!درسته؟چون new میشه دیگه و...میدونید تو هر لود از بین میره اطلاعات.من میخوام اطلاعات رو ثابت همه جا بتونم استفاده کنم مثل session ها....مگه شما چطور از تعریف کلاس فقط تو یه صفحه استفاده میکنید ارث بری و این چیزا چون مداوم حرکت به صفحات داریم ارزش ندارندLاخه یکی نیست به سوال من جواب بده؟؟؟؟؟؟؟؟؟؟؟؟؟شما چطور از oop استفاده میکنید هی که نمیشه new کرد تو رفت و برگشت!!!!!!!!!!!یه راه داره مثل static تعریف کردن!!!این کار نمیشه ؟؟؟ یکی میگه واسه کلاینت static تعریف نمیشه!!!! یکی کمک کنه.این همه اون بالا میگن oop خوب بگید دیگه چه کارکنم؟؟؟؟مطالب اون بالا رو خوندم به هدفم نرسیدم جست و جو هم کردم..مراجعم نگا کردم.مشگلم اینه بار اول حرفه ای شروع به نوشتن کردم و نمیخوام اطلاعات تو session نگه دارم چون خطرناکه و یه سری مسایل دیگه .میخوام اطلاعات لازم کاربران رو تو کلاس از لحظه ی ورود تا لحظه ی خروج نگه دارم.بگید چی کار کنم؟شما ها چی کار میکنید؟من با خودم فکر کردم امنیتش بالاتره (private) وهم از متد های خوبی براش استفاده کرد.


از این نوشته شما من هیچی نفهمیدم.
شما چه اطلاعاتی رو میخواید توی همه صفحات داشته باشید؟
اگر اطلاعات مربوط به کاربره که معمولا توی سشن نگه داری میشه. اگر اطلاعات مربوط به تنظیمات سایته که اونم یا داخل دیتابیس ذخیره میشه یا داخل فایل. اگر دقیق بگید چه اطلاعاتی رو میخواید توی همه صفحات داشته باشید بیشتر میشه کمک کرد.

موفق باشید

yasi_prog
پنج شنبه 17 شهریور 1390, 20:11 عصر
سلام مرسی از دوستان...
چشم ببینید من میخوام یه سری چیزها مثل شماره شناسه کاربری و ایمیل و نام کاربری طرفی که ورود به سایت کرذه از اول تا اخر تو حرکتش به تمامی صفحاتم ثابت نگه دارم چون

1- برای شناساییش و طبق اون اوردن اطلاعات مربوط به خودش از پایگاه داده یه سری مشخصه لازم دارم که همیشه باید باشه
2-برای پروفایلش و چیزهای دیگه که توسایت همیشه نمایش میخوام داده بشه و مداوم نمیخوام از پایگاه بخونم.

نمیشه اطلاعاتی که خیلی مورد استفادست رو هی از پایگاه داده بخونم . من یه کلاس میخوام پیاده کنم مثل session که تو هر صفحه به اطلاعات طرف بدون کوئری زدن دسترسی داشته باشم.اما میدونید session امنیت لازم رو نداره و ثانیا بدون session باید امکان ایجاد همچین کلاسهایی داشته باشیم که فقط یه بار تو صفحه اول کلاس رو new کنیم و تو صفحات مختلف ازش استفاده کنیم.


تمام اطلاعات برنامه PHP با رسیدن به آخر برنامه از حافظه رم حذف میشه!

ببینید من اطلاعات رو میخوام تو همه صفحاتم ثابت باشه!من که کاربر رو ببرم یه صفحه دیگه ، چه طور به اطلاعات کلاس که تو صفحه قبلی new کردم ،تو این صفحه جدید دسترسی پیدا کنم.؟؟؟

خواهش میکنم کمک کنید امیدوارم واضح گفته باشم...:افسرده: ...

Mr.Moghadam
جمعه 18 شهریور 1390, 00:51 صبح
چشم ببینید من میخوام یه سری چیزها مثل شماره شناسه کاربری و ایمیل و نام کاربری طرفی که ورود به سایت کرذه از اول تا اخر تو حرکتش به تمامی صفحاتم ثابت نگه دارم

این موارد رو به راحتی میتونید داخل سشن ذخیره کنید.
بدین صورت که پس از ورود کاربر اطلاعات مورد نیاز رو از دیتابیس میخونید و به صورت آرایه داخل سشن ذخیره میکند.توی همه صفحات میتونید ازش استفاده کنید.


$_SESSION = array('username'=>'ali' , 'pcode'=>'11111111');


نمیشه اطلاعاتی که خیلی مورد استفادست رو هی از پایگاه داده بخونم
خب از سشن در این مورد استفاده کنید.


اما میدونید session امنیت لازم رو نداره
راههای برای بالا بردن امنیت سشن وجود داره. اگر سشن امنیت لازم رو نداشت سایتهای بزرگ ازش استفاده نمیکردن.


ثانیا بدون session باید امکان ایجاد همچین کلاسهایی داشته باشیم که فقط یه بار تو صفحه اول کلاس رو new کنیم و تو صفحات مختلف ازش استفاده کنیم.
اگر شما از کلاس سشن استفاده کنید هر تعداد هم که شیء جدید از کلاس سشن بسازید بازهم اطلاعات داخل سشن از بین نمیره.

مثلا اگر یه کلاس به صورت زیر داشته باشید برای کار با سشن :


class session
{

function __construct()
{
session_start();
}

function set($key, $value)
{
$_SESSION[$key] = $value;
}

function get($key)
{
return $_SESSION[$key];
}
}

در ابتدا شما اگر با متد set یک مقدار رو داخل سشن بریزید در هر کدوم از صفحات سایت به هر تعداد هم که از این کلاس یک شیء بسازید بازهم با فراخوانی متد get اطلاعات داخل سشن رو دریافت میکنید.

موفق باشید

Keramatifar
جمعه 18 شهریور 1390, 00:53 صبح
دوست عزیز
شما می تونید Object هاتون رو serialize کنید و داخل session قرار دهید و در صفحات دیگر با unserialize کردن از اون ها استفاده کنید.
مثال:
فایلی با نام cl.php را در نظر بگیرید که کلاس myclass در آن قرار دارد/

<?php
class myclass
{
public $username, $password, $tel;

function __construct($pass)
{
$this->password = $pass;
}
public function MyFunc($user)
{
$this->password = $user;
}
}
?>
فایلی با نام obj.php در نظر بگیرید که یک instance از آبجکت را در آن می سازیم و بصورت serialze شده در session قرار می دهیم:


<?php
session_start();
require 'cl.php';
$obj = new myclass('123');
$obj->tel = '9126902414';
$obj->MyFunc('ali');
$_SESSION['myobj'] = serialize($obj);

?>
حالا فایلی با نام getobj.php را در نظر بگیرید که آبجکت مورد نظر را از session می خواند و unserialize می کند.

<?php
session_start();
require 'cl.php';
$obj1 = unserialize($_SESSION['myobj']);
echo $obj1->tel;
?>

نکته مهم این است که باید فایل cl.php در هر دو فایل include شده باشد

exlord
جمعه 18 شهریور 1390, 19:26 عصر
میتونید کلاستون رو به صورت singleton بنویسید .... توی همین سایت نمونش هست .... در این حایت فقط 1 instance از کلاس میسازین و در همه جای برنامه از این instance استفاده میکنین ...

yasi_prog
شنبه 19 شهریور 1390, 07:42 صبح
سلام واقعا ممنونم از اینکه ایده خیلی خوب و خیلی جالب ریختن کلاس در session !!! به صورت سریال شده و هم اینکه ایده جالب singletone رو معرفی کردید. قبلا که هیچی پیدا نکردم ،الان باید فکر کنم کدوم رو انتخاب کنم:لبخند:.

yasi_prog
شنبه 19 شهریور 1390, 09:05 صبح
اما یه سوال ... single tone تو مبحث طراحی وب (php) رو باید خودم پیاده سازی کنم.چون تحت نرم افزار ها بودند ، تاپیک های مورد جست جوی من (http://barnamenevis.org/showthread.php?99235-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D8%A7%D9%84%DA%AF%D9%88%D9%87%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-Design-Pattern&highlight=Pattern++SingleTone)!!! یعنی من پیاده سازیش رو تحت وب ندیدم!!میشه یه راهنمایی بکنید که اشنا شم..

Keramatifar
یک شنبه 20 شهریور 1390, 01:01 صبح
دوست عزیز
اگر بخواهید کلاستون single tone pattern باشد باید constructor کلاس را private تعریف کنید، اما این رو هم در نظر داشته باشید که این قضیه کار شما رو راه نمی دازه، بدلیل اینکه single tone pattern معمولا stateless است و حداکثر کاری که می تونید بکنید static تعریف کردن متدهای کلاس است.
برای داشتن Object های Stable بین صفحات در ASP.NET چیزی به اسم ViewState داریم، اما در PHP تنها راه مطمئن همین serialize کردن در session است

yasi_prog
یک شنبه 20 شهریور 1390, 07:36 صبح
مرسی.اره دقیقا تو تحقیقاتی که کرده بودم، مشکل اساسی همین statless بودنشه که چیزی راجع به رفعش تو php نبود.من هم از همین روش serial کردن استفاده کردم.اما میتونم یه سوال دیگه بپرسم؟؟من همه این کار را رو کردم و طبق اموزشهای تاپیک های گذشته ،من برای امنیت اونها از ذخیره session در دیتا بیس استفاده کردم.اما اینکه میگن اطلاعات مهم رو حتی به صورت رمز گذاری شده در دیتا بیس قرار ندیدو فقط id طرف رو بذارید،فوقش کوئری های بیشتر میزنید_ برای بالا بردن امنیت راست میگن؟؟ من میل و اینکه الان مدیر یا کاربر معمولی و و ادرس عکسش و ...توی سشن گذاشتم!!! کارم اشتباست؟

Keramatifar
یک شنبه 20 شهریور 1390, 19:58 عصر
شما باید این رو هم در نظر داشته باشید که session نوعی از داده هایی است که روی سرور دخیره می شود و فضا اشغال می کند، هرچه تعداد و حجم Session ها بیشتر باشد بار بیشتری به سرور شما تحمیل می شود، من خودم معمولا فقط userID را در Session نگه می دارم ...