2010-02-20 14 views
7

मैंने formChecker.php नामक एक PHP क्लास बनाया है। यह एक फॉर्म मान्य करता है। जावा प्रोग्रामर के रूप में, मैं इस वर्ग का एक और वर्ग में उदाहरण बनाने और इसे वहां से चलाने के विचार से चिपकना चाहता हूं। यह मेरे लिए काम नहीं कर रहा है। निम्नलिखित एक प्रदर्शन है:एक PHP वर्ग बनाएं -> किसी अन्य वर्ग में इसकी एक वस्तु बनाएं

class formChecker{ 

    ..... validation functions go here 

} 

class runFormChecker{ 

.... create instance of formchecker here and use it's methods etc. 

} 

क्या यह किया जा सकता है? मैं जो सोच रहा हूं वह कई वर्गों को विकसित कर रहा है जिन्हें अलग से चलाया जा सकता है।

जीएफ

+4

+1: आपका स्वागत है StackOverflow :) – Sarfraz

+0

PHP में करने के लिए, यह भी एक राजधानी पहले अक्षर से नाम वर्गों के लिए सम्मेलन है। –

उत्तर

8

मैं रनफॉर्म चेकर के उदाहरण के लिए फॉर्म चेकर (या कुछ ऐसा जो कुछ निश्चित इंटरफ़ेस लागू करता है) का उदाहरण पास करता हूं। देख http://en.wikipedia.org/wiki/Dependency_injection

हो सकता है के रूप में सरल रूप में

interface FormChecker { 
    public function foo($x); 
} 

class MyFormChecker implements FormChecker 
    public function foo($x) { 
    return true; 
    } 
} 

class RunFormChecker { 
    protected $formChecker=null; 
    public function __construct(FormChecker $fc) { 
    $this->formChecker = $fc; 
    } 

    // .... 
} 

$rfc = new RunFormChecker(new MyFormChecker); 
+0

हां। यह मेरे लिए बेहतर विकल्प है। जैसा कि मैंने उपयोग किया है उसके समान। धन्यवाद। – user277813

0

हाँ, और यह अजीब नहीं है। आप आमतौर पर formChecker का उदाहरण runFormChecker के उदाहरण के भीतर बनाते हैं, न कि कक्षा स्तर पर।

8

बस formChecker वर्ग फ़ाइल शामिल आप जैसे में उपयोग करना चाहते हैं तो बस कक्षा से पहले:

include "formChecker.php" 

class runFormChecker{ 

    function __construct() { 
     $obj = new formChecker; // create instance 
     // more processing............ 
    } 
} 

यदि फिर भी, आप एक फ़ाइल में दोनों वर्गों है (जो बुरा है), तो शामिल करने की ज़रूरत

class formChecker{ 
    // ............ 
} 

class runFormChecker{ 

    function __construct() { 
     $obj = new formChecker; // create instance 
     // more processing............ 
    } 
} 

More Information Here....

: फ़ाइल, आपको लगता है कि सीधे जैसे की उदाहरण बना सकते हैं 210

धन्यवाद :)

+0

क्या फ़ाइल को "शामिल" करना भी बुरा नहीं है? क्या यह वही बात नहीं है जैसे दोनों कक्षाएं एक फाइल में हों? – user277813

+1

@ grungefreak1: यह बुरा कैसे है? यदि आप कक्षाओं को अपनी फाइलों में डालते हैं और उन्हें एक अन्य फाइल में शामिल करते हैं, तो वे एक बार फिर से चलेंगे, लेकिन केवल ऐप के बाहर चल रहे स्क्रिप्ट में, वे अपनी फाइलों में रहते हैं जो उन्हें बनाए रखना आसान बनाता है। – Sarfraz

+0

प्वाइंट लिया गया। हालांकि, मैं एक ऑब्जेक्ट को दूसरे के कन्स्ट्रक्टर में पास करने की प्रक्रिया के साथ जाऊंगा क्योंकि यह मेरे ओओपी विचारों के अनुरूप है। जीएफ – user277813

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