मैं शुरू कर दिया उत्प्रेरक है कि इस तरह देखा का उपयोग कर कुछ पर्ल कोड लिखने:
package My::Controller;
extends 'Catalyst::Controller';
sub handler :Path :Args(0) :Location(some/url)
my ($self, $c) = @_;
$self->do_something_with_arguments($c);
$self->make_a_decision($c);
$self->another_method($c);
}
तो मैंने सोचा। ओ ओ (? क्यों हर समय चारों ओर पास $ ग), और मैं इस के लिए बदल दिया:
package My::Controller;
extends 'Catalyst::Controller';
has c => (is => "rw", isa => "Catalyst");
sub handler :Path :Args(0) :Location(some/url)
my ($self, $c) = @_;
$self->c($c);
$self->do_something_with_arguments;
$self->make_a_decision;
$self->another_method;
}
हैंडलर के लिए केवल एक प्रवेश बिंदु है, तो $ आत्म नहीं है> ग हमेशा सही ढंग से स्थापित किया जाएगा।
मेरे सहयोगियों ने कहा कि यदि कैटलिस्ट का उपयोग किया जाने वाला था, तो ठीक है, हर कोई इसका इस्तेमाल करेगा। वे चिंतित थे कि इस तरह से ऐसा करने से स्मृति रिसाव हो जाएगा क्योंकि अनुरोध समाप्त होने के बाद $ सी का संदर्भ जारी रहेगा। क्या यह सच है?