Как правильно создать метод в классе PHP?

Создаю класс который ищет в тексте смайлы вроде :) и заменяет их на графические. Если делать это все без использования класса, то нормально срабатывает, а мне нужно чтобы был отдельный метод в классе. Метод находится в классе iaComment, var_dump возвращает массив. ООП у меня пока хромает. Подскажите пожалуйста.

public function smileToSmile($text)
	{
		$smiles = array(
			':)' => '<img alt=":)" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/smile.png">',
			'=)' => '<img alt="=)" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/smile.png">',
			':(' => '<img alt=":(" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/sad.png">',
			'=(' => '<img alt="=(" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/sad.png">',
			':D' => '<img alt=":D" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/happy.png">',
			':\'(' => '<img alt=":\'(" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/cry.png">'
		);

		$text_keys = array_keys($smiles);
		$text = array_values($smiles);
		return $text;

	}


foreach ($comments as &$comment)
	{
		$comment['body'] = str_replace($iaComment->smileToSmile($text), $iaComment->smileToSmile($text), $comment['body']);
	}
  • Вопрос задан
  • 2375 просмотров
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
class iaComment
{

    // Метод можно сделать static
    static public function smileToSmile() {
        $smiles = array(
        ':)' => '<img alt=":)" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/smile.png">',
        '=)' => '<img alt="=)" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/smile.png">',
        ':(' => '<img alt=":(" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/sad.png">',
        '=(' => '<img alt="=(" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/sad.png">',
        ':D' => '<img alt=":D" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/happy.png">',
        ':\'(' => '<img alt=":\'(" src="' . IA_URL . 'plugins/comments/templates/front/img/smiles/cry.png">'
        );
        return array(array_keys($smiles), array_values($smiles));
    }

   // ...
}

// Получаем массив один раз (вне цикла), чтобы каждый раз не дёргать класс
$smiles = iaComment::smileToSmile();
foreach ($comments as &$comment) {
    $comment['body'] = str_replace($smiles[0], $smiles[1], $comment['body']);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@iznaur
в str_replace вы не указываете на что заменить,т.к. $iaComment->smileToSmile($text) всегда возвращает одно и то же,ещё не понятно,что за $text передается в метод smileToSmile
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы