Ben geri aramaları gibi özel yöntemleri örneği kullanabilir miyim?

3 Cevap php

Benim belirli senaryo özel yöntem içinde düzenli ifadeler kullanarak bazı metin dönüşümü yapıyor içerir. Özel bir yöntem preg_replace_callback çağırır, ama geri çağrıları nesneler üzerinde ortak olması gerekir gibi görünüyor, bu yüzden özel dünya üzerinden kesiliyor ve ben ediyorum doğrusu değil uygulama ayrıntılarını açığa şaşırıp.

Yani, özetle: ben kapsüllemeyi kaybetmeden bir geri gibi bir örnek yöntemi kullanabilir miyim?

Teşekkürler.

3 Cevap

Evet, yapabilirsiniz görünüyor:

<?php

//this works
class a {
   private function replaceCallback($m) { return 'replaced'; }

   public function test() {
        $str = " test test ";
        $result = preg_replace_callback('/test/', array($this, 'replaceCallback'), $str);
        echo $result;
   } 
}

$a = new a();
$a->test();


//this doesn't work
$result = preg_replace_callback('/test/', array(new a(), 'replaceCallback'), ' test test ');    
echo $result;

Yani o preg_replace_callback() gibi görünüyor, ya da PHP'nin geri arama mekanizması denilen edildiği kapsam farkındadır.

5.2.8 üzerinde test

Eğer (bu orada genel olabilir) metin işleme için ayrı bir yardımcı sınıf oluşturmak ve bu sınıf içinde geri arama yöntemi oluşturabilir miyim? Eğer belirli bir örnek veri erişimi gerekiyorsa özgün sınıf (nesne) bir referans iletebilirsiniz.

Ana sınıfına kamu arayüzü tutarlı ve temiz kalır, ve bunu muhtemelen yine ait değil, bir sınıfın belirli bir dize işleme çekin ...

Korumalı kullanamıyorum? Ben bu iki sınıfın ilişki daha net olması için birbirleriyle ilişkili olarak ne olduğunu bilmek gerekir, ama sen sınıfını genişletmek ve bunları kamu yapmadan miras yeni korumalı yöntemleri kullanmak gerekir.

Bu yardımcı olur umarım!

Şerefe