2011-10-04 13 views
11

मेरे पास एक ऑब्जेक्ट "उपयोगकर्ता" है जिसमें गुण हैं जिनकी अभिगम्यता को संरक्षित घोषित किया गया है लेकिन जिसे सीधे जादू __set-method के माध्यम से सेट किया जा सकता है।कार्यान्वयन विवरण के बारे में PhpStorm कैसे बताना है? (जादू विधियों)

enter image description here

अब PhpStorm संकेत सही पक्ष पर एक बड़ा लाल स्तंभ के साथ यह स्पष्ट विसंगति।

क्या PhpStorm को समझाया जा रहा है कि क्या चल रहा है, इसलिए यह अब एक त्रुटि के रूप में नहीं दिखाया गया है?


संपादित करें:

मैं उपयोग PhpStorm 2.1.4

यहाँ ठीक कुछ कोड है कि एलेक्सी से अब तक सुझाव दिया समाधान का जो दुर्भाग्य से ऐसा नहीं करता है के साथ एक साथ मुद्दा (एक मिसाल है यह मेरे लिए):

c.php:

<?php 
/** 
* @property mixed $a 
*/ 
class c1 
{ 
    protected $a; 

    public function __construct() { $this->a = __CLASS__; } 

    public function __get($n) { return $this->{$n}; } 
} 

/** 
* @property $a mixed 
*/ 
class c2 
{ 
    protected $a; 

    public function __construct() { $this->a = __CLASS__; } 

    public function __get($n) { return $this->{$n}; } 
} 

test.php

<?php 
require "c.php"; 

$c1 = new c1(); 
var_dump($c1->a); 

$c2 = new c2(); 
var_dump($c2->a); 

और आउटपुट:

string 'c1' (length=2) 
string 'c2' (length=2) 

और यह कैसे PhpStorm में तरह दिखता है:

enter image description here

मेरा लक्ष्य:

या तो होने PhpStorm डिजाइन "समझ" या बस हो रही हर जगह है, जबकि इस मुद्दे से अलग त्रुटि का पता लगाने आई नहीं उन कष्टप्रद लाल निशान से छुटकारा।

उत्तर

8

यह अब PHPStorm में काम कर रहा है 3 :)

दुर्भाग्य से यह हमारे नजर में एक खुला अनुरोध है, http://youtrack.jetbrains.net/issue/WI-4468

एक ही तरीका है अब इस चेतावनी से बचने के लिए देखते हैं, के लिए @property जोड़ने के लिए है $ उपयोगकर्ता की कक्षा घोषणा। यानी

/** 
* @property $name string 
*/ 
class User { 
    protected $name; 
} 
$user = new User(); 
$user->name = "me"; 
+0

कामकाज नहीं बदलता है कि PHPStorm पहुंच को दोषपूर्ण के रूप में समझता है। – Raffael

+1

अच्छा, मैंने पूरा उदाहरण जोड़ा। और मैं आईडीई में इन चेकों के डेवलपर हूं। यदि यह आपके लिए काम नहीं करता है - हमारे ट्रैकर पर जाएं और पुन: उत्पन्न करने के लिए अपना कोड प्रदान करें। –

+1

यह अब PHPStorm 3 के लिए काम कर रहा है :) – Raffael

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