दिलचस्प पोस्ट
एनिमेशन के बिना स्विचन गतिविधियों पैडिंग के बिना कस्टम शीर्षक बार (एंड्रॉइड) Google मानचित्र V3 – किसी सीमा के लिए ज़ूम स्तर की गणना कैसे करें मैं प्रत्येक उपयोगकर्ता के लिए एक नवीनतम रिकॉर्ड तिथि के लिए SQL कैसे पूछूं? मैं .hprof फ़ाइल का विश्लेषण कैसे कर सकता हूं? .NET के लिए एसवीएन पुस्तकालय? बफ़र्ड वीडियो के साथ एंड्रॉइड विडियो-दृश्य अभिविन्यास परिवर्तन मैं कॉलिंग विधि का नाम कैसे प्राप्त करूं और प्रतिबिंब का उपयोग करूँ? आईओएस कैसे मैक्रो द्वारा आईफोन एक्स, आईफोन 6 प्लस, आईफोन 6, आईफोन 5, आईफोन 4 का पता लगा सकता है? Std :: system_clock और std :: steady_clock के बीच अंतर? डिस्क पर फ़ाइल का आकार प्राप्त करें फ़ोल्डर में सभी फाइलों के साथ वीआईएम में प्रवेश करना त्रुटि: कृपया संस्करण संघर्ष को Google-services प्लगइन के संस्करण को अपडेट करके ठीक करें डेटाग्रिड टेम्पलेट कॉलम पाठ बॉक्स पाठ कैसे पहुंचें WPF C # स्ट्रिंग से अंतिम वर्ण निकालें

PHP में – (डबल बृहदान्त्र) और -> (तीर) के बीच अंतर क्या है?

PHP में तरीकों तक पहुंचने के दो अलग तरीके हैं, लेकिन अंतर क्या है?

$response->setParameter('foo', 'bar'); 

तथा

 sfConfig::set('foo', 'bar'); 

मैं मान रहा हूँ -> (साइन या शेवरॉन से अधिक के साथ डैश) चर के कार्यों के लिए उपयोग किया जाता है, और :: (डबल कॉलन) वर्गों के कार्यों के लिए उपयोग किया जाता है सही बात?

क्या => असाइनमेंट ऑपरेटर केवल एक सरणी के भीतर डेटा सौंपने के लिए प्रयोग किया जाता है? क्या यह = असाइनमेंट ऑपरेटर के विपरीत है, जो एक चर को इन्स्तायेट या संशोधित करने के लिए प्रयोग किया जाता है?

वेब के समाधान से एकत्रित समाधान "PHP में – (डबल बृहदान्त्र) और -> (तीर) के बीच अंतर क्या है?"

जब बाएं भाग एक वस्तु उदाहरण है, तो आप -> उपयोग करते हैं। अन्यथा, आप का उपयोग करें ::

इसका अर्थ यह है कि -> ज्यादातर उदाहरणों के सदस्यों तक पहुंचने के लिए उपयोग किया जाता है (हालांकि यह स्थैतिक सदस्यों तक पहुंचने के लिए भी उपयोग किया जा सकता है, इस तरह के प्रयोग को हतोत्साहित किया जाता है), जबकि :: आमतौर पर स्थैतिक सदस्यों तक पहुंचने के लिए उपयोग किया जाता है (हालांकि कुछ विशेष मामलों में इसका उपयोग किया जाता है उदाहरण के सदस्यों तक पहुंचने के लिए)।

सामान्य तौर पर, :: स्कोप रिज़ॉल्यूशन के लिए उपयोग किया जाता है, और इसमें इसके बावजूद एक क्लास नेम, parent , self या (5.3 PHP में) static हो सकता है parent वर्ग के सुपर क्लास के दायरे को संदर्भित करते हैं जहां यह प्रयोग किया जाता है; self उस वर्ग के दायरे को संदर्भित करता है जहां यह प्रयोग किया जाता है; static "बुलाए गए दायरे" को संदर्भित करता है ( देर से स्थैतिक बाइंडिंग देखें)

नियम यह है कि :: साथ एक कॉल :: एक उदाहरण कॉल है अगर और केवल तभी:

  • लक्ष्य विधि को स्थिर के रूप में घोषित नहीं किया गया है और
  • कॉल के समय एक संगत ऑब्जेक्ट प्रसंग है, जिसका अर्थ है कि ये सत्य होना चाहिए:
    1. कॉल एक संदर्भ से बना है जहां $this मौजूद है और
    2. $this की कक्षा या तो यह कहा जा रहा है विधि का वर्ग या इसके एक उपवर्ग है

उदाहरण:

 class A { public function func_instance() { echo "in ", __METHOD__, "\n"; } public function callDynamic() { echo "in ", __METHOD__, "\n"; B::dyn(); } } class B extends A { public static $prop_static = 'B::$prop_static value'; public $prop_instance = 'B::$prop_instance value'; public function func_instance() { echo "in ", __METHOD__, "\n"; /* this is one exception where :: is required to access an * instance member. * The super implementation of func_instance is being * accessed here */ parent::func_instance(); A::func_instance(); //same as the statement above } public static function func_static() { echo "in ", __METHOD__, "\n"; } public function __call($name, $arguments) { echo "in dynamic $name (__call)", "\n"; } public static function __callStatic($name, $arguments) { echo "in dynamic $name (__callStatic)", "\n"; } } echo 'B::$prop_static: ', B::$prop_static, "\n"; echo 'B::func_static(): ', B::func_static(), "\n"; $a = new A; $b = new B; echo '$b->prop_instance: ', $b->prop_instance, "\n"; //not recommended (static method called as instance method): echo '$b->func_static(): ', $b->func_static(), "\n"; echo '$b->func_instance():', "\n", $b->func_instance(), "\n"; /* This is more tricky * in the first case, a static call is made because $this is an * instance of A, so B::dyn() is a method of an incompatible class */ echo '$a->dyn():', "\n", $a->callDynamic(), "\n"; /* in this case, an instance call is made because $this is an * instance of B (despite the fact we are in a method of A), so * B::dyn() is a method of a compatible class (namely, it's the * same class as the object's) */ echo '$b->dyn():', "\n", $b->callDynamic(), "\n"; 

आउटपुट:

 B :: $ prop_static: B :: $ prop_static मूल्य
 B :: func_static (): बी में :: func_static

 $ b-> prop_instance: B :: $ prop_instance मान
 $ b-> func_static (): बी में :: फंककास्टस्टीक

 $ बी> func_instance ():
 बी में: func_instance
 ए में :: func_instance
 ए में :: func_instance

 $ A-> dyn ():
 ए में :: कॉल गतिशील
 गतिशील डीआईएन (__callStatic) में

 $ बी> dyn ():
 ए में :: कॉल गतिशील
 गतिशील डीआईएन (__कॉल) में

:: स्थिर संदर्भ में, अर्थात्। जब कुछ विधि या गुण स्थिर के रूप में घोषित किया जाता है:

 class Math { public static function sin($angle) { return ...; } } $result = Math::sin(123); 

साथ ही, :: ऑपरेटर (स्कोप रेज़ोल्यूशन ऑपरेटर, उर्फ पामैयिम नेकडोतोयिम ) का उपयोग गतिशील संदर्भ में किया जाता है जब आप किसी अभिभावक वर्ग की कोई विधि / प्रॉपर्टी जोड़ते हैं:

 class Rectangle { protected $x, $y; public function __construct($x, $y) { $this->x = $x; $this->y = $y; } } class Square extends Rectangle { public function __construct($x) { parent::__construct($x, $x); } } 

-> गतिशील संदर्भ में प्रयोग किया जाता है, अर्थात। जब आप कुछ वर्ग के कुछ उदाहरण से निपटते हैं:

 class Hello { public function say() { echo 'hello!'; } } $h = new Hello(); $h->say(); 

वैसे: मुझे नहीं लगता कि सिम्फनी का उपयोग करना एक अच्छा विचार है जब आपके पास कोई भी OOP अनुभव नहीं है

वास्तव में इस प्रतीक से हम एक क्लास पद्धति को कॉल कर सकते हैं जो स्थैतिक है और अन्य प्रारंभिक रूप से निर्भर नहीं है …

 class Test { public $name; public function __construct() { $this->name = 'Mrinmoy Ghoshal'; } public static function doWrite($name) { print 'Hello '.$name; } public function write() { print $this->name; } } 

यहां डूडइट () फ़ंक्शन किसी भी अन्य विधि या चर पर निर्भर नहीं है, और यह एक स्थिर विधि है। यही कारण है कि इस वर्ग के उद्देश्य को शुरू किए बिना हम इस ऑपरेटर द्वारा इस विधि को क्यों कॉल कर सकते हैं?

Test::doWrite('Mrinmoy'); // Output: Hello Mrinmoy.

लेकिन अगर आप write विधि को इस तरह से कॉल करना चाहते हैं, तो यह एक त्रुटि उत्पन्न करेगा क्योंकि यह प्रारंभिक रूप से निर्भर है।

=> ऑपरेटर को एक एसोसिएटिव सरणी में कुंजी-मान जोड़े निर्दिष्ट करने के लिए प्रयोग किया जाता है। उदाहरण के लिए:

 $fruits = array( 'Apple' => 'Red', 'Banana' => 'Yellow' ); 

इसका अर्थ foreach कथन में समान है:

 foreach ($fruits as $fruit => $color) echo "$fruit is $color in color."; 

स्थिर और तत्काल विधियों और गुणों के बीच का अंतर उन लोगों के लिए सबसे बड़ी बाधाओं में से एक है जो केवल PHP 5 में OOP PHP के साथ शुरु करते हैं।

डबल बृहदान्त्र ऑपरेटर (जिसे हिब्रू-ट्राइविया से पामायिम नेकुडोतियम कहा जाता है) का प्रयोग एक वस्तु या संपत्ति को स्थैतिक संदर्भ से कहकर किया जाता है। इसका मतलब है कि ऑब्जेक्ट का एक उदाहरण अभी तक नहीं बनाया गया है।

तीर ऑपरेटर, इसके विपरीत, विधियों या गुणों को कॉल करता है जो ऑब्जेक्ट के एक उदाहरण के संदर्भ से है।

स्टेटिक मैनेजमेंट ऑब्जेक्ट मॉडल में विशेष रूप से उपयोगी हो सकते हैं जो एक डेटाबेस बनाने और हटाने के लिए जुड़े हुए हैं, क्योंकि आप सम्मिलित टेबल आईडी में रिटर्न वेल्यू सेट कर सकते हैं और फिर ऑब्जेक्ट को पंक्ति आईडी से इन्स्तांत करने के लिए कन्स्ट्रक्टर का उपयोग कर सकते हैं।

हां, मैंने सिर्फ अपना पहला 'PHP Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM' मेरी बुरी, मेरे पास एक $instance::method() जो कि $instance->method() होनी चाहिए। मुझे मूर्ख।

अजीब बात यह है कि यह अभी भी मेरे स्थानीय मशीन (PHP 5.3.8 चल रहा है) पर ठीक काम करता है – कुछ भी नहीं, error_reporting = E_ALL के साथ भी कोई चेतावनी नहीं – परन्तु परीक्षण सर्वर पर बिल्कुल नहीं, वहां यह सिर्फ एक सिंटैक्स त्रुटि के साथ विस्फोट करता है और ब्राउज़र में एक सफेद स्क्रीन चूंकि PHP लॉगिंग टेस्ट मशीन पर बंद हो गया था, और होस्टिंग कंपनी इसे चालू करने के लिए बहुत व्यस्त थी, यह बहुत स्पष्ट नहीं था

तो, चेतावनी के शब्द: जाहिरा तौर पर, कुछ PHP इंस्टालेशन आपको एक $ उदाहरण :: विधि () का उपयोग करने के लिए, जबकि अन्य नहीं करते हैं।

अगर कोई भी उस पर विस्तार कर सकता है, तो कृपया