2009-10-13 16 views
9

हे लोग। मैं PHP में ओओपी के लिए नया हूँ। मैंने सीखा है कि वस्तुओं को कैसे लिखना और बनाना है। क्या कोई ऑब्जेक्ट लेने और इसे दूसरी स्क्रिप्ट में पास करने का कोई तरीका है? या तो जीईटी या पोस्ट या सत्र या जो भी हो। यदि ऐसा नहीं है कि मैं किसी ऑब्जेक्ट को किसी पृष्ठ पर कुछ चर निर्दिष्ट कैसे करूं, तो उसी ऑब्जेक्ट को किसी अन्य पृष्ठ पर अधिक चर निर्दिष्ट करें?वस्तु को 1 पृष्ठ से दूसरे स्थान पर ले जाएं?

धन्यवाद

उत्तर

14

आप सत्र में ऑब्जेक्ट्स स्टोर कर सकते हैं लेकिन आपको session_start() को कॉल करने से पहले कक्षा परिभाषा को शामिल करने की आवश्यकता है (या class autoloading का उपयोग करें और सत्र शुरू करने से पहले इसे सेट करें)।

हर पृष्ठ पर::

//include class definition 
require('class.php'); 

//start session 
session_start(); 

1 पेज:

$object = new class(); 
$object->someProperty = 'hello'; 

//store in session 
$_SESSION['object'] = $object; 

बाद के पृष्ठों:

$object = $_SESSION['object']; 

//add something else, which will be stored in the session 
$object->anotherPropery = 'Something'; 
+0

धन्यवाद है! बिल्कुल सही उदाहरण इसके अलावा मुझे __autoload विधि के बारे में पता नहीं था। – dotty

1

आप $ _SESSION का उपयोग कर सकते हैं। लेकिन यह केवल उस सत्र के लिए होगा।

2

आप ऑब्जेक्ट को सत्र में संग्रहीत कर सकते हैं। आप वस्तु को क्रमबद्ध कर सकते हैं और जीईटी या पोस्ट के माध्यम से गुजर सकते हैं।

यदि आप ऑब्जेक्ट को साइट पर जारी रखना चाहते हैं, तो सत्र शायद आपकी सबसे अच्छी शर्त है।

+0

धन्यवाद, लगता है कि सत्र सबसे अच्छा शर्त – dotty

1

उदाहरण के लिए एकाधिक 'स्क्रिप्ट' पर object का उपयोग करना:

सबसे पहले, आपको यह तय करना होगा कि आपके ओओपी एप्लिकेशन की किस प्रकार की संरचना है। यदि आप MVC pattern जैसे कुछ का उपयोग करते हैं, तो आपको SESSION या REQUEST का उपयोग करके ऐसा नहीं करना चाहिए, क्योंकि आप उन वस्तुओं को 'प्लग' कर सकते हैं जिन्हें आप 'एक' में उपयोग करना चाहते हैं। इसका क्या अर्थ है?

एक त्वरित उदाहरण:

  1. उपयोगकर्ता A अपनी साइट index.php
  2. अब आप एक स्थिर index.html, से सामग्री लोड कर सकते हैं, लेकिन आप जांच करने के लिए उपयोगकर्ता को प्रमाणीकृत किया गया है या नहीं चाहते हैं, तो प्रवेश करती है विशिष्ट सामग्री उदाहरण देखने के लिए 'व्यवस्थापक लॉगिन', आप include_once('Authentication.php') का उपयोग कर सकते हैं और इस फ़ाइल से एक कक्षा शुरू कर सकते हैं, उदा। <?php $Auth = new Auth_Handler; ?> यह एथ क्लास को index.php या किसी अन्य फ़ाइल में भी उपलब्ध कराएगा जिसे आप इस कक्षा को शामिल करना चाहते हैं। यदि आप प्रमाणीकरण वर्ग 'वापसी मान को किसी अन्य फ़ाइल में पास करना चाहते हैं उदा। 'register.php' आप सत्र या किसी अन्य कैश का उपयोग कर सकते हैं। पूरे ऑब्जेक्ट्स को पास करने से उनके आकार के कारण अनुशंसा नहीं की जाती है। फ़ाइलों की शुरुआत में वांछित कक्षाओं को शामिल करना और शुरू करना बहुत बेहतर है। और सत्र द्वारा रिटर्न पास करने से कम जगह का उपयोग होता है।

यह वास्तव में उस फ्रेमवर्क या एपीआई पर निर्भर करता है जिसे आप उपयोग करना चाहते हैं, या आप कौन सी परियोजना बनाना चाहते हैं।

3

यहाँ टॉम हैग से जवाब देने के लिए संबंध में autoloading साथ एक उदाहरण है:

function __autoload($className) { 
    $file = PATH_TO_FOLDER_WITH_ALL_CLASS_FILES."/".$className.'.php'; 
    if(file_exists($file)) { 
     require_once $file; 
    } 
} 

session_start(); 

पृष्ठ गुजर वस्तु:

$object = new class(); 
$object->someProperty = 'hello'; 

//store in session 
$_SESSION['object'] = $object; 

पृष्ठ प्राप्त

इससे पहले कि आप सत्र शुरू ऑब्जेक्ट:

$object = $_SESSION['object']; 

//add something else, which will be stored in the session 
$object->anotherPropery = 'Something'; 

जब आप सत्र से डेटा पुनर्प्राप्त करते हैं तो स्वत: लोड विधि ऑब्जेक्ट्स को स्वचालित रूप से लोड कर देगी।

संबंधित मुद्दे