PHP OOPS kavramlar için gerekli bazı talimat

5 Cevap php

PHP bazı oops kavramları temizlemek gerekir.

  1. Hangisinin daha hızlı olduğunu $this->method(); veya self:method();
  2. I static anahtar kelime kavramını biliyorum ama bunun gerçek Kullanımı gönderin olabilir. Bu örneği tarafından erişemez, ama bunun için karınca yararı olmadığı?
  3. ne factory? Bunu nasıl kullanabilirim?
  4. Nedir singleton? Nasıl kullanabiliriz?
  5. Nedir late static binding?

http://www.php.net/manual/en/oop5.intro.php

Ben üzerinden aşağıdaki linke gitti ama ben onunla net almıyorum.

5 Cevap

1) Which is faster $this->method(); or self:method();

Ben olan yöntemleri ve sonuçları her ikisini de kullanarak aynı yöntemini 1,000,000 kere çağıran basit bir döngü kurmak hemen hemen eşittir (gerçekte -> slightly daha hızlı ama son derece kısa bir farkla idi)

2) I know the concept of static keyword but can you please post the actual Use of it. Since it can not be accessed by the instance, but is there ant benefit for that?

Ne demek istiyorsun örneği tarafından erişilen değil?

public static $x;
public static function mymethod() {};

self :: $ x ve self :: MyMethod () aracılığıyla ulaşılabilir.

Statik üyeleri birden kullanır bunların hiçbiri çok güzel vardır. Onlar tek nesnelerini oluşturmak için kullanılabilir, (bir önyükleme nesne gibi bir şey için) sınıf örneğini gerek kalmadan sınıfı yöntemlerini çağırmak için kullanılabilir

3) what is factory? How can i use it?

Fabrikalar benzer tipteki nesne örneğini oluşturmak için gerekli soyut kod için kullanılan nesnelerdir. Kullanıcıların bir hiyerarşi kullanan bir web sitesi varsa Örneğin, her kullanıcı seviyesi kendi sınıfını olabilir. Temelde tüm kullanıcı sınıfları aynı şekilde oluşturulur, ancak gerekli bir ya da iki sınıf belirli eylemleri olabilir.

Bir fabrika nesnesi tüm bu örnekleme kodunu içeren ve geliştirici basit bir arayüz sunacak. Yani yerine kod birden fazla alanlarda kendinizi tekrarlayan $ oFactory-> CREATEUSER () ve $ oFactory-> createManager () kullanabilirsiniz.

4) What is singleton? How can i use that?

Bir tekil herhangi bir zamanda bir ve sadece bir örnek olabilir bir sınıftır. Temel fikir, nesne önceden başlatılmış olup olmadığını kontrol etmek için bir statik yöntem ve statik bir değişken kullanmak olduğunu ifade etti.

Eğer yetkili kullanıcılar sorumlu kodunuzu sadece tek bir yerde, bir veritabanı soyutlama olduğundan emin olmak istiyorum beri sadece bir sınıfın bir örneği olması önemli bir Singleton kullanmak istiyorsunuz, örneğin bir güvenlik modeli bir tekil olabilir Sadece (her sorgu için aynı sunucu ve aynı veritabanına bağlayan tutmak için mantıklı olmaz) bir db bağlantısı gerektirir eğer bir tekil olabilir

Pre-PHP5.3 singletons kolayca bir baz singleton sınıfı uzatamaz geç statik bağlama araçlarının yokluğunda bu yana bazı temel kusurları var.

5) What is late static binding?

Geç statik bağlama (özellikle türetilmiş sınıfları) OO kullanımını geliştirmek için statik yöntemler için sınıf çözünürlükte bir gecikme olduğunu. LSB verir self:: veya __CLASS__ yerine onlar içeri tanımlanan sınıfın artık mevcut sınıf gidermek için

.... PHP'nin önceki sürümleri Örneğin

class parentClass {
    public static function someMethod() {
        echo( __CLASS__ );
    }
}

class childClass extends parentClass {
}

$oObject = new childClass();
$oObject::someMethod();

çıkış parentClass tarayıcı kullanarak LSB childClass çıkışı olurdu.

Sınıf çözülene beri bu düzgün bir tek taban sınıf tanımlamak ve diğer nesneler beklenen sonuçlar ile bunu genişletmek olması artık mümkün değildir, tekil gibi birçok şeyler için yararlıdır.

2) Static Key word: Unlike the methods and data members used in OOPS where the scope is decided by access specifiers, the static methods/attributes are available as a part of the class. So it is available to all the instance defined for the class. To implement static keyword functionality to the attributes or the methods will have to be prefix with “static” keyword. To assign values to static variables you need to use scope resolution operator(::) along with the class name.

Örnek:

< ?
class ClassName
{
   static private $staticvariable;  //Defining Static Variable

   function __construct($value)
   {
        if($value != "")
        {
            ClassName::$staticvariable = $value; //Accessing Static Variable
        }
        $this->getStaticData();
   }

   public function getStaticData()
   {
        echo ClassName::$staticvariable; //Accessing Static Variable
   }
}

$a = new ClassName("12");
$a = new ClassName("23");
$a = new ClassName("");
?>

Output: 12 23 23

Açıklama:

* Here i have declared static variable $staticvariable
* In the constructor i am checking and value and then assigning the value

to the static variable * Finally the getStaticData() method will output the static variable content

1) daha hızlıdır hangisi $ this-> yöntemi (); ya da kendi kendine: yöntemi ();

Answer: "self" (not $self) refers to the type of class, where as $this refers to the current instance of the class. "self" is for use in static member functions to allow you to access static member variables. $this is used in non-static member functions, and is a reference to the instance of the class on which the member function was called.

Because "this" is an object, you use it like: $this->member Because "self" is not an object, it's basically a type that automatically refers to the current class, you use it like: self::member

Tekiz nedir? Nasıl kullanabiliriz? php

Yazılım mühendisliği, tekiz desen bir nesne bir sınıfın örneğinin kısıtlayarak, bir singleton matematiksel kavramını uygulamak için kullanılan bir tasarım modelidir. Tam bir nesne sistemi genelinde eylemleri koordine etmek için gerekli olduğunda, bu yararlıdır. Kavram bazen daha verimli bir şekilde tek bir amacı, mevcut olduğunda çalıştırmak sistemlerine genel veya bu nesnelerin belirli bir sayıda (örneğin beş) için örnekleme kısıtlamak edilir. Bazıları gereksiz olduğunu yargılamak, bir anti-pattern düşünün, bir sınıfın bir tek örneği aslında gerekli olmadığı durumlarda gereksiz sınırlamalar tanıtır ve bir uygulama içine küresel devlet tanıttı

Örnek:

final class Singleton 
{

    protected static $_instance;

    private function __construct() # we don't permit an explicit call of the constructor! (like $v = new Singleton())
    { }

    private function __clone() # we don't permit cloning the singleton (like $x = clone $v)
    { }

    public static function getInstance() 
    {
      if( self::$_instance === NULL ) {
        self::$_instance = new self();
      }
      return self::$_instance;
    }
}

$instance = Singleton::getInstance();

5) geç statik Ne bağlayıcıdır?

Bakınız: Late Static Binding

Fabrika Nedir?

bakın Design Pattern

I have gone through below link but I am not getting clear with it.

Resmi belgeler, zengin ve kapsamlı olduğunu, ancak bazı kullanıcılar zor anlamak bulabilirsiniz. Bunu kavramak için yapamıyorsanız, ben phpro.org bu mükemmel öğretici (php konularda büyük bir büyük bir kaynak) geçmesi öneririm:

Object Oriented Programming with PHP

Öğretici OOP kavramları anlamada sorunu olan kişilere çok yararlı iyi gerçek dünya örnekleri ile basit bir dille yazılmıştır.

Sen oldukça genel bir soru soruyor. Bu gerçekten temel kavramlardır, bu nedenle de genel OOP öğreticiler ve referans kullanarak, biraz daha araştırma çalışmalısınız.

Sadece bazı ipuçları sağlamak için: Sorunuzun en "statik" kavramına bakın. Bir sınıfın bir sınıf ve bir örneği arasındaki farkı anlamak gerekir. Bu anahtar bir kavramdır.

A sınıfı bir örneğini oluşturmak için plandır. Yalnızca bir Class, ama birden örnekleri var. Eğer "yeni" anahtar sözcüğünü kullanmak bir örneğini oluşturmak ve örneği ($ x = new A ()) bir ad vermek için; Ama çalıştırmak veya erişilebilir bir sınıf örneği gerekmez yöntemleri ve alanları olabilir. Sınıf, onları tutar, herhangi bir örneğinin üzerine, kendilerini statik değildir özellikleri veya yöntemleri erişemiyor vardır. Onlar (bir statik değişkeni varsa, onu denir yerde tüm yürütme genelinde aynı olacak) geneldir veri ve işlevleri tutabilir çünkü yararlıdır.

Ben kuvvetle ikiliye konuda bir kitap okumanızı tavsiye ederim. Ben şahsen PHP Object-Oriented Solutions David Güçleri tarafından tavsiye ederim. Bu bence yeni başlayanlar için PHP kodlama Nesne Tabanlı için en iyi giriştir. Verimli programlama modellerini dağıtabilir önce temel bilgiye ihtiyacımız var.

Eğer gerçekten tasarım desenleri anlamak için arıyorsanız, i Design Patterns by Christoffer G. Lasater öneriyoruz. Ben bu desenleri bazı kendimi anlamak için mücadele ettik, ve o ortalama programcı için makul anlaşılır şekilde onları açıklıyor. Java için yazılmış, ama farklılıklar gerçekten büyük değildirler.