Php 5.3 dostluk taklit etmek için basit bir yolu var mı

3 Cevap php

Benim sistemde diğer derslere yardım etmek için bazı sınıfları gerekir. Bu özelliğin olmaması beni kamu olmamalı bazı yöntemler kamuoyuna yaptı. Bunun sonuçları benim ekip üyeleri bir karmaşa neden kötü ve çirkin şekilde kod uygulamak vardır.

5.3 php bir dostluğu tanımlamak için bir yolu var mı?

(I http://bugs.php.net/bug.php?id=34044 Sen basit bir çözüm varsa orada oy isteyebilirsiniz farkındayım).

3 Cevap

Kısacası, hayır. Genel kabul görmüş yaklaşım kütüphanelere karşı geliştirmek veya yeniden nasıl ekibinizin eğitmek ya da budur. İlk çözüm phpdoc ile docs bina ve @ görünürlüğü ile docbloc açıklamalarda görünürlük ayarı, ve tabii ki aslında sınıfları belgeleyerek oldukça kolayca yapılabilir. İkinci biraz daha ayrıntı bilmeden yorum yapmak mümkün olmaz.

/**
 * Some helper class for LibraryInterface
 *
 * ATTENTION!
 * This class should not be used outside this package.
 *
 * @visibility package
 * @package mypackage
 */
class Helper
{
  public function doStuff()
  {
    /* does stuff */
  }
}

/**
 * Class for accessing some part of the library.
 *
 * @visibility public
 * @package mypackage
 */
class LibraryInterface
{
  public function doStuff()
  {
    $this->helper->doStuff();
  }
}

Ben aynı işlevsellik arayan ve bir çözüm uygulamak mümkün oldu. Kullanmak için, sadece sınıf Dostluk türetmek ve türetilen sınıfın arkadaş sınıfları belirtin. Bunu burada bulabilirsiniz: http://rommelsantor.com/clog/2011/04/23/php-5-3-class-friendship-support

Sana "arkadaşlık" ile ne demek emin değilim. Herhangi bir yeni sınıf bu sınıf "uygulamak" hangi soyut sınıfları kullanabilirsiniz. Yoksa sınıflar diğer sınıfları genişletmek ve kamu veya özel karşıt olarak "korunan" yöntemleri, değişkenleri, vb yapmak olabilir.

Takım "kötü ve çirkin bir şekilde" herhangi bir kod uygulayan varsa, o zaman daha büyük sorunlar olabilir.