Можете ли вы написать функцию класса вне класса в PHP? - PullRequest
3 голосов
/ 26 ноября 2008

В C ++ я кодирую так:

//foo.h    
class cBar
{
    void foobar();
}

//foo.cpp
void cBar::foobar()
{
    //Code
}

Я пытался сделать это на PHP, но парсер жаловался. Документация PHP также не помогает. Можно ли это сделать на PHP?

Ответы [ 3 ]

4 голосов
/ 26 ноября 2008

Нет. Вам нужно включить все определения вашей функции в блок класса. Если определение ваших функций в отдельной структуре заставляет вас чувствовать себя лучше, вы можете использовать интерфейс.

interface iBar
{
    function foobar();
}


class cBar implements iBar
{
    function foobar()
    {
        //Code
    }
}

Я бы предложил просто привыкнуть к кодированию по-новому. Легко программировать на одном языке, но я думаю, что вы ведете проигрышную битву, если хотите сделать то же самое на разных языках.

1 голос
/ 26 ноября 2008

Вы не можете сделать это таким же образом.

Вы можете использовать абстракцию класса и интерфейсы . Основное различие между ними заключается в том, что интерфейс не позволяет указывать тело функции, где (не абстрактные) методы в абстрактном объекте могут содержать все виды поведения по умолчанию.

Абстракт:

abstract class cBar
{
    // MUST be extended
    abstract protected function foobar();

    // MAY be extended
    protected function someMethod()
    {
        // do stuff
    }
}

class cBarExtender extends cBar
{
    protected function foobar()
    {
        // do stuff
    }

}

Сопряжение:

interface cBar 
{
    // MUST be implemented
    protected function foobar();
}

class cBarImplementation implements cBar
{
    protected function foobar()
    {
        // do stuff
    }
}
0 голосов
/ 26 ноября 2008

Язык на самом деле не предоставляет эту функцию, но если вы действительно хотите этого, вы можете установить расширение ClassKit , которое позволит вам делать некоторые динамические изменения класса во время выполнения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...