Tam adını bilmeden niteliğini Nesne başvurmak için nasıl?

2 Cevap php

Ben aslında şu anda SOAP ile çalışıyorum, ve rahatsız edici yanıt ismi dediğim yönteme bağlı olarak değişir. Örneğin, bir yöntem ile yanıt verir ..

$ Tepki> SendOrderResult

başka bir şekilde cevap verebilmektedir iken

$ Tepki> GetOrdersStateResult

Adını bilmeden değerine atıfta bir yolu var mı? $ tepki> * Sonucu gibi yani bir şey

2 Cevap

Hayır, bu mümkün değil, sizin kod analiz ederek arama ve gerekli yöntem afterwords çağırmak için hangi yöntemi anlamaya muktedir olmalıdır:

if (this condition)
{
  $response->SendOrderResult();
}
else
{
  $response->GetOrdersStateResult();
}

Diğer bir olasılık, get_class_methods işlevini kullanmaktır.

$class_methods = get_class_methods(new myclass());

foreach ($class_methods as $method_name)
{
    echo "$method_name\n";
}

Eğer ($response türü olduğunu varsayarak stdClass) Bunun için küçük bir fonksiyon yazabiliriz:

function extractResult($response) {
    foreach ($response as $attribute_name => $attribute_value) {
        if (strtolower(substr($attribute_name, -6)) == 'result')
            return $attribute_value;
    }
}

Daha sonra yoluyla arayabilirler

$result = extractResult($response);

Not: yani, fonksiyon çalışmaz bazı durumlar olabilir sonuçta öznitelik adı ile bitmiyor ise Result.