PHP ile Temel OO

3 Cevap php

Bir kitap satın almak için bana söylemeden, herkes şu soruyu cevaplarken ilgi olurdu?

i bir sınıf foo adında bir ad yaşıyorum. ve ben bar adlı başka bir sınıf inşa etmek istedim. nasıl ben tam tersi foo, bar farkında yapmaya devam ve ki? ne pahasına? potansiyel olarak yararlı sınıfların bütün bir evren olabileceğini akılda tutmak

3 Cevap

Hiçbir kitap, ama see the namespace documentation

Sınıflar farklı ad iseniz:

<?php
namespace MyProject;

class Bar { /* ... */ }

namespace AnotherProject;

class Foo{ /* ... */ 
   function test() {
      $x = new \MyProject\Bar();
   }
}
?>

Sınıfları aynı ad iseniz, o hiç ad gibi.

Namespace soru hakkında, ben tuergeist's answer bakın. OOP yönü, ben sadece bu Foo ve Bar Bu konuda hafif bir kokusu vardır, karşılıklı farkındalık önerdi söyleyebilirim. Bunun yerine arayüzleri ile çalışmak ve uygulama sınıfları arabirimine başvuruları atalım olurdu. Bu 'dependency inversion' adlandırılır olabilir.

interface IFoo {
    function someFooMethod();
}

interface IBar {
    function someBarMethod();
}

class FooImpl1 {
    IBar $myBar;
    function someImpl1SpecificMethod(){
       $this->myBar->someBarMethod();
    }

    function someFooMethod() { // implementation of IFoo interface
       return "foostuff";
    }
}

Ayrıca kullanarak deyimi ile başka ad diğer sınıflarını kullanabilirsiniz. Aşağıdaki örnek, ad içine bir çift çekirdek sınıfı uygular:

namspace TEST
{
    using \ArrayObject, \ArrayIterator; // can now use by calling either without the slash
    class Foo
    {
        function __construct( ArrayObject $options ) // notice no slash
        {
            //do stuff
        }
    }
}