This could lead to revolution in cli mode now that developers can load new code without restarting process.
(PECL classkit >= 0.1)
classkit_method_redefine — Verilen yöntemin kodunu devingen olarak değiştirir
$sinifadi
, string $yontemadi
, string $degistirgeler
, string $kod
[, int $bayraklar
= CLASSKIT_ACC_PUBLIC
] ) : boolBilginize: Bu işlev çalışmakta olan yöntemi değiştirmekte kullanılamaz.
Bu işlev DENEYSELDİR. Bu işlevin davranışı, ismi ve belgeleri PHP'nin sonraki sürümlerinde hiçbir duyuru yapılmaksızın değiştirilebilir. Bu riski göze alamayacaksanız bu işlevi kullanmayın.
sinifadi
Yeniden tanımlanacak yöntemin sınıfı
yontemadi
Yeniden tanımlanacak yöntem
degistirgeler
Yöntemin virgülle ayrılmış değiştirgeler listesi
kod
yontemadi
çağrıldığında işleyecek olan yeni kod
bayraklar
Yöntem
CLASSKIT_ACC_PUBLIC
,
CLASSKIT_ACC_PROTECTED
veya
CLASSKIT_ACC_PRIVATE
tiplerinden biri olabilir
Bilginize:
Bu değiştirge, PHP 5'den itibaren kullanılabilir, öncesinde bütün yöntemler açıktır (public).
Başarı durumunda TRUE
, başarısızlık durumunda FALSE
döner.
Örnek 1 - classkit_method_redefine() örneği
<?php
class Example {
function foo() {
return "foo!\n";
}
}
// Example nesnesi oluştur
$e = new Example();
// Example::foo() (yeniden tanımlamadan önce yöntem çıktısı)
echo "Before: " . $e->foo();
// 'foo' yöntemini yeniden tanımla
classkit_method_redefine(
'Example',
'foo',
'',
'return "bar!\n";',
CLASSKIT_ACC_PUBLIC
);
// Example::foo() (yeniden tanımlamadan sonra yöntem çıktısı)
echo "After: " . $e->foo();
?>
Yukarıdaki örneğin çıktısı:
Before: foo! After: bar!