Dizgi yerine bir dizge istisnası olarak bir dizi atmak istiyorum. Özel sınıfınızı genişleten kendi sınıfınızı tanımlarsanız bunu yapmak mümkün müdür? Örneğin throw new CustomException('string', $options = array('params'));
Bir dize yerine diziyi php'de bir istisna olarak atayabilir misiniz?
cevap
Tabii İçin
. Sadece farkında olmak için hata işleme kodunuza bağlı olacak ve dizi özelliğini uygun şekilde kullanacaksınız. Sen mesela, istediğiniz herhangi bir parametre almaz için özel istisna sınıfının yapıcısı tanımlayın ve sonra sadece yapıcı tanımının içinden temel sınıfın kurucusunu çağırmak için emin olabilir:
class CustomException extends \Exception
{
private $_options;
public function __construct($message,
$code = 0,
Exception $previous = null,
$options = array('params'))
{
parent::__construct($message, $code, $previous);
$this->_options = $options;
}
public function GetOptions() { return $this->_options; }
}
Ardından, çağıran kod ... Evet, yapabilirsiniz
Hey adam 'Exception'ı genişletmeyi unuttun ':) –
:
try
{
// some code that throws new CustomException($msg, $code, $previousException, $optionsArray)
}
catch (CustomException $ex)
{
$options = $ex->GetOptions();
// do something with $options[]...
}
istisna sınıfı uzatılması için php dokümanlar göz at.
Exception class'u genişletmeniz ve istediğiniz şeyi yapmak için bir __construct() yöntemi oluşturmanız gerekecektir.
Sanırım cevapla biraz geciktim ama çözümümü de paylaşmak istedim. Bu seyir için daha fazla kişi muhtemelen Orada İstisna uzatmak istemiyorsanız
class JsonEncodedException extends \Exception
{
/**
* Json encodes the message and calls the parent constructor.
*
* @param null $message
* @param int $code
* @param Exception|null $previous
*/
public function __construct($message = null, $code = 0, Exception $previous = null)
{
parent::__construct(json_encode($message), $code, $previous);
}
/**
* Returns the json decoded message.
*
* @param bool $assoc
*
* @return mixed
*/
public function getDecodedMessage($assoc = false)
{
return json_decode($this->getMessage(), $assoc);
}
}
json_decode'a ikinci bir parametre olarak true ekleyerek bir dizi döndürülürse, bir nesne döndürülürse –
, bir dizeye dizinizi kodlamak :) şunlardır:
try {
throw new Exception(serialize(['msg'=>"Booped up with %d.",'num'=>123]));
} catch (Exception $e) {
$data = unserialize($e->getMessage());
if (is_array($data))
printf($data['msg'],$data['num']);
else
print($e->getMessage());
}
da kullanabilirsiniz json_encode
/json_decode
Eğer tercih edersen.
- 1. Bir diziyi işlev argümanlarına bölebilir misiniz?
- 2. $ bir nesne yerine bir diziyi enterpolasyon
- 3. Bir diziyi, dize uzunluğuna sonra PHP'de değer olarak nasıl sıralarım?
- 4. , dizeden dize olan bir diziyi yeniden yorumla
- 5. Bir dönüşüm operatörünün türüne göre bir istisna yakalayabilir misiniz?
- 6. PHP gethostbyname() ad, bir dize değişkeni yerine bir değişken olarak geçirildiğinde IP yerine Ad döndürüyor
- 7. org.json.JSONException: JSONArray [0] bir dize İstisna
- 8. Dizideki bir diziyi JS
- 9. 'bir istisna
- 10. Make Contract.Assert bir İletişim kutusu görüntülemek yerine bir istisna atar
- 11. Bir Diziyi Yeniden Boyutlandırma
- 12. Bir diziyi
- 13. İki boyutlu bir diziyi değer olarak filtreleme
- 14. Django filtre sorgusuna bir dize olarak bir dize kullanma
- 15. Laravel 5.2: Bir dize yerine bir nesneyi geçirerek Blade'i genişletme
- 16. Rails bulunmamalıdır Find_by_ yöntemleri nil yerine boş bir diziyi döndürür?
- 17. .Net formunu kontrol olarak yükleyebilir misiniz?
- 18. S3'e yerel dosya yerine bir akış kullanarak yükleyebilir misiniz?
- 19. Bir "tür" argüman olarak geçebilir misiniz?
- 20. Bir diziyi hsqldb
- 21. Çeviri kısıtlamaları diziyi dize dönüşüme atıyor
- 22. Nasıl Yapılır Bir diziyi
- 23. Neden char * yazdırmak bir adres yerine bir dize verir?
- 24. Pandalarda bir diziyi düzleştirme
- 25. Python argparse kullanımı yerine bir istisna atmak istiyorum.
- 26. İlişkisel diziyi bir dizeye ekleme
- 27. Diziyi bir ağaç olarak görüntülemek için nasıl bir işlev oluşturabilirim?
- 28. bir istisna
- 29. Tek bir dize olarak sp_helptext sonuçlarını alın
- 30. Bir diziyi bir ağaca dönüştürmek
Sanırım biraz hasta olabilirim. Yine de ilginç bir soru. –