Класс PHP не вернется в строку - PullRequest
2 голосов
/ 17 июля 2009

Я довольно новичок в PHP, поэтому у меня возникла небольшая проблема в процессе обучения:

Я создал класс с именем DataStrip.php

<?php

final class DataStrip
{
    public function DataStrip()
    {
        // constructor  
    }

    public function stripVars($vars)
    {

        return $vars;
    }
}
?>

и затем я пытаюсь передать публичной функции stripVars значение:

<?php

    include_once ('lib/php/com/DataStrip.php');

    echo($projCat);
    $a = new DataStrip;
    $a->stripVars($projCat);
    echo($a);

?>

однако я получаю эту ошибку:

(!) Исправляемая фатальная ошибка: объект класса DataStrip не может быть преобразован в строку в myfilepath

... какой-нибудь совет, возможно, о том, что я могу здесь делать неправильно? Сейчас это просто тестовая функция, так как я пытаюсь привыкнуть к ООП PHP. :)

Ответы [ 3 ]

11 голосов
/ 17 июля 2009

Что вы ожидаете, что это произойдет? Вы не сохраняете результат того, что stripVars возвращает в переменную:

$result = $a->stripVars($projCat);
print $result;

Что вы пытаетесь сделать, это напечатать саму переменную объекта. Если вы хотите контролировать, что происходит при попытке напечатать объект, вам нужно определить метод __toString .

4 голосов
/ 17 июля 2009

если вы хотите это сделать ... вам нужно объявить метод __toString ()

    <?php

    final class DataStrip
    {
    private $vars;

            public function DataStrip()
            {
                    // constructor  
            }

            public function stripVars($vars)
            {

                    $this->vars = $vars;
            }

            public function __toString() {

             return (string) $this->vars;
            }


    }

// then you can do

 $a = new DataStrip;
    $a->stripVars($projCat);
    echo($a);

    ?>
1 голос
/ 17 июля 2009

Если вы не вернетесь к переменной:

$projCat = $a->stripVars($projCat);

Когда вы echo $a повторяете объект, а не какую-то конкретную функцию или переменную внутри него (поскольку, когда вы объявляете $a, вы объявляете его как все в классе - переменные, функции, весь набор и Kaboodle.

У меня также есть проблемы с php oop, поэтому, пожалуйста, исправьте, если я ошибаюсь:)

...