मैं यह पता लगाने की कोशिश कर रहा हूं कि फ्लाई पर बड़ी संख्या में PHP वर्ग फ़ंक्शन कैसे आयात करें। उदाहरण के लिए ...फ्लाई पर PHP वर्ग फ़ंक्शन को फिर से परिभाषित करना?
class Entity
{
public function __construct($type)
{
require_once $type."_functions.php"
}
// ...
}
$person = new Entity("human");
$person->sayhi();
$cow = new Entity("cow");
$cow->sayhi();
human_functions.php:
class Entity redefines Entity
{
public function sayhi()
{
echo "Hello world!";
}
}
cow_functions.php:
class Entity redefines Entity
{
public function sayhi()
{
echo "Moo!";
}
}
मैं classkit_method_redefine()
और runkit_method_redefine()
की तरह कुछ संभावनाएं (जो "प्रायोगिक" कर रहे हैं पाया है , और वे वर्तमान में चल रहे वर्ग को वैसे भी संशोधित नहीं कर सकते हैं)। मैं फिलहाल PHP 5.3.3 पर हूं, इसलिए मैं Traits का उपयोग नहीं कर सकता (सुनिश्चित नहीं है कि वही है जो मैं वैसे भी ढूंढ रहा हूं)।
// Example 2:
class OtherEntity { /* Code Here */ }
class Entity
{
public function __construct($type)
{
global $foo;
unset($foo);
$foo = new OtherEntity();
}
}
$foo = new Entity();
, यह एक बहुत hacky विधि की तरह लगता है लेकिन: मैं सफलता इस तरह हैंडलर चर को पुनर्परिभाषित किया था है। सबसे महत्वपूर्ण बात यह है कि, यदि प्रत्येक वर्ग $foo
के उदाहरण का नाम नहीं है, तो यह काम नहीं करेगा। क्या मैं क्या करने की कोशिश कर रहा हूं उसके लिए कोई कामकाज है?
नोट: मुझे पता है कि मैं एक वर्ग का विस्तार कर सकते है, लेकिन मेरे मामले में जब इकाई वर्ग शुरू किया जाता है, वहाँ कोई सुरक्षित तरीका अग्रिम क्या यह के साथ शुरू करने की आवश्यकता होगी उपवर्ग में पता करने के लिए है। शायद एक तरीका है जिसे मैं लिख सकता हूं, जैसे:
public function changeClass
{
this->class = OtherEntity;
}
आपकी मदद के लिए धन्यवाद!
आपकी वास्तविक समस्या का निश्चित समाधान है। आपका पहला उदाहरण [फैक्ट्री पैटर्न] (http://www.tutorialspoint.com/design_pattern/factory_pattern.htm) का सुझाव देता है, लेकिन मुझे यकीन नहीं है कि आप वास्तव में क्या हासिल करना चाहते हैं। – VolkerK
हाँ आपने कुछ डिज़ाइन विकल्पों को बनाया है जिन्हें आपको पुनर्विचार करने की आवश्यकता है। –
एक वास्तविक php फ़ंक्शन 'redefine' है। मेरा मानना है कि आप 'विस्तार' की तलाश में हैं – CodeGodie