2014-06-09 7 views
0

이것이 가능한지 확실하지 않습니다. 예를 들어 :

$color = isset($product['color']) ? $product['color'] : ''; 
$size = isset($product['size']) ? $product['size'] : ''; 
$qty = isset($product['qty']) ? $product['qty'] : ''; 
*** 
*** 

나는 내가 그 설정하면 확실하지 않다 배열에서 값을 얻을 필요가 거의 모든 곳에서 isset()를 사용합니다. 내 자신의 사용자 지정 프레임 워크를 사용하고 있기 때문에 자동으로 설정을 확인하는 방법을 추가 할 수 있는지 궁금합니다.

그래서 내가 이런 걸 원하는 : PHP 마법 기능 __isset이 클래스에 대해 무엇을

//if its not set, do not throw warning message just return blank 
$color = $product['color']; 
$size = $product['size']; 
$qty = $product['qty']; 

기본적으로 유사한하지만 난 하지클래스 어떤 배열을 위해 필요합니다.

내가 모든 컨트롤러에 사용되는 내 BaseController에 기능을 추가하지만 여전히 별도의 함수 호출 :

$color = $this->isSet($product, 'color', ''); 
$size = $this->isSet($product, 'size', ''); 
$qty = $this->isSet($product, 'qty', ''); 

과 기능 :

public function isSet(array $data, $key, $return) { 
    return isset($data[$key]) ? $data[$key] : $return; 
} 

내 질문은,이다 거기 함수없이 이것을하는 더 좋은 방법?

+1

변수를 예상 할 때 경고를 끌 수는 있지만'isset()','type hinting' 및'assert() '를 사용하는 것이 좋습니다. – DanFromGermany

+0

var가 시작된 클래스를 설정하고 필요할 때 채우는 것이 어떨까요? –

+0

@BrettSantore 예를 들어 들어 왔지만 클래스를 설정할 수는 있지만 클래스를 사용할 수없고 배열마다 클래스를 사용하는 것은 오버 헤드로 보입니다. – GGio

답변

-3
$color = @$product['color']; 
$size = @$product['size']; 
$qty = @$product['qty']; 
+0

OP가 제안하는대로 변수를 공백으로 설정하는 대신 경고를 표시하지 않습니다. –

+0

@JayBlanchard, 사실입니다. 그러나 함수를 사용하지 않고이 작업을 수행 할 수있는 다른 방법은 없으며 실제로 빈 변수는 비어 있습니다. – Charles

+5

죄송 합니다만 오류 억제 기능을 사용하는 답변에 투표를하겠습니다. – vascowhite

관련 문제