Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 12/05/12 в 19:17 |
Написал код1, в этом коде есть пару самописных функций.
Теперь хочу этот код1 сделать функцией вынести это в отдельный файл и прикрутить к другому коду2.
Возможно ли такое? Просто смущает то что написанная функция будет содержать в себе еще функции.
Последний раз редактировалось: Lexikon (14/05/12 в 12:29), всего редактировалось 1 раз
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 12/05/12 в 19:39 |
такое возможно
но лучше сделать класс
|
|
|
|
💀💀💀
С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728
|
Добавлено: 12/05/12 в 20:12 |
ага, изучай ООП. Оч удобно!
|
|
|
|
См.Подпись
С нами с 30.01.07
Сообщения: 33345
Рейтинг: 6370
|
Добавлено: 12/05/12 в 20:22 |
Да
|
|
Подпись Сдаётся в Аренду. $100 за одну строчку в месяц.
Больше 1000 постов в месяц. Обращайтесь в ЛС.
|
5
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 13/05/12 в 11:00 |
конечно это будет смущать, эти функции то попадут в глобальную область видимости.
т.е. тут вариант, что эти функции будут дальше существовать сами по себе.
можно использовать статический метод класса.
но если рассматривать это в рамках ооп, получается сложнее. это наверное похоже чем то "фасад", объединяем некий функционал, по один интерфейс.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 13/05/12 в 21:45 |
всем спасибо.
буду пробовать
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 14/05/12 в 15:51 |
с классами так что то и не получилось разобраться, вернее сложилось такое впечатление что применения класса тут неумесно, хотя х.з., может ошибаюсь.
Есть у меня файл с готовым рабочим кодом, но тут решил усовршенствовать, отдельно написал код этого усовершенства и сделал это как собственной функцией в которой есть еще пару функцияй т.е. выглядет это примерно так:
Файл: function.php
Код: [развернуть] |
function UNIQ($subject){
function random($filename) {
...
}
function string_sort($a, $b){
...
}
...
} |
если я создаю файл result.php с кодом:
Код: [развернуть] |
<?php
require_once("function.php");
$subject = "тут текст для обработки";
echo UNIQ($subject);
?>
|
в этом случае все работает нормально.
НО, как только я подключаю function.php в index.php
с таким содержанием:
Код: [развернуть] |
function getLimitText($text, $limit) {
...
}
require_once("function.php");
... остальной код ...
|
выдается такая вот ошибка:
Fatal error: Cannot redeclare random() (previously declared in function.php)
невозможно переопределить что то в функции random()
как только я убераю функциию random() начинает ругаться на следующую т.е. на string_sort()
Х.з. отдельно работает, а в связке нет.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 14/05/12 в 16:09 |
Код: | function UNIQ($subject){
function random($filename) {
...
}
function string_sort($a, $b){
...
}
...
} |
прикол
по идее надо делать так:
Код: | function UNIQ($subject){
random($filename);
string_sort($a, $b);
}
function random($filename) {
...
}
function string_sort($a, $b){
...
} |
но я бы настоятельно рекомендовал попробовать изучить классы
|
|
|
|
💀💀💀
С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728
|
Добавлено: 14/05/12 в 17:52 |
создаешь файл my_class.php
Содержание my_class.php
Код: [развернуть] |
<?php
class My_Class
{
public $filename; // задаем имя файла, как хошь, по умолчанию будет му_филенаме.екст
public $subject // сабж твой
public function __construct ($filename = "") // конструктор класса, тут при вызове класса задаются параметры сразу. в общем если нет имя файла, то будет такой
{
if (!$filename || empty($filename))
$filename = "my_filename.ext";
}
// функция уник. вызываешь сабж тут вот этой переменной $this->subject и работаешь с ней
public function UNIQ ()
{
$this->random();
//...
$this->string_sort($a, $b);
//...
return $resultat;
}
public function random ()
{
// file($this->filename); вот так примерно вызываешь файл свой, или как оно у тебя устроено...
}
public function string_sort ($a, $b) // я бы порекомендовал использовать встроенную функцию sort() или более подходящую из числа функций сортировки массивов.
{
...
}
public function displayResult() // ну тут вывод результатов, можно снабдить хтмл тегами. чтобы не мешать логику и вывод
{
echo $this->UNIQ();
}
}
?>
|
в индексе работаешь так:
Код: [развернуть] |
<?php
include_once ("my_class.php");
$class = new My_Class (); // создаем экземпляр нашего класса
$class->subject = "тут мой сабж типо"; // задаем сабж
$class->displayResult(); // и выводим
|
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 14/05/12 в 18:43 |
касаемо:
Цитата: | public function string_sort ($a, $b) // я бы порекомендовал использовать встроенную функцию sort() или более подходящую из числа функций сортировки массивов. |
там написана функция сортировки массива по количиству символов в строках.
так что вроде продругому не получится.
А так буду разбираться в классах, постараюсь собрать всё в бошке
Благодарю за помощь.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 15/05/12 в 09:21 |
походу я туповат
Код: [развернуть] |
<?php
//----------- Функция сортировки Массива ------------
function string_sort($a, $b){
if ( strlen ($a) < strlen($b) )
{
return 1;
}
elseif ( strlen ($a) == strlen($b) )
{
return 0;
}
else
{
return -1;
}
}
//---------------------------------------------------
// Текст для обработки
$subject = "A blonde girl is playing a tambourine when a guy outside throws a snowball against her window. She puts on a coat and goes outdoors for a snow fight with the guy. When she is laying on the ground he bares her tits and puts his cold hands on them. Finally, they go indoors for a fuck.";
// Директория с файлами синонимов.
$syn_dir = "synonyms";
// Читаем содержимое файла в массив
$pattern = file("keys.dat");
// Сортируем массив по убыванию длин строк.
usort($pattern, 'string_sort');
// Определяем кол-во элеменов массива.
$cnt_pattern = count($pattern);
// Запускаем цикл прохода по тексту.
for ($z = 0; $z < $cnt_pattern; $z++) {
// Получаем путь к файлу с текстом замены.
$replacement = str_replace(" ", "-", "./".$syn_dir."/".trim($pattern[$z]).".txt");
// Получаем рандомный кей для замены
$lines = file($replacement);
$replacement = $lines[array_rand($lines)];
// Присваиваем переменной значение слова поиска и удаляем возможные пробелы по краям.
$pattern_i = trim($pattern[$z]);
// С помощью регулярки проходим по тексту с целью поиска разно-регистровых слов
// и заменяем согласно регитру.
$subject = preg_replace("#\b$pattern_i\b#", $replacement, $subject);
$pattern_i = ucfirst($pattern_i);
$replacement = ucfirst($replacement);
$subject = preg_replace("#\b$pattern_i\b#", $replacement, $subject);
$pattern_i = strtoupper($pattern_i);
$replacement = strtoupper($replacement);
$subject = preg_replace("#\b$pattern_i\b#", $replacement, $subject);
}
// Удаляем лишнии символы пробелов.
$subject = preg_replace("#(\s+)#", " ", $subject);
$subject = str_replace(" .", ".", $subject);
// Результат.
echo $subject;
?>
|
это я написал код синонимайзера, но вот теперь мучаюсь с ним немогу его прикрутить к другому коду. чтоб отдавать $subject; с исходным текстом и на выходе получить $subject; уже обработанный
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 15/05/12 в 09:46 |
дык заверни все это дело в функцию и все.
Код: |
function synonymize($subject) {
// Директория с файлами синонимов.
$syn_dir = "synonyms";
...........
// Результат.
// echo $subject;
// Вместо вывода echo возвращаем return сабж
return $subject;
}
|
ну и дальше вызывай echo synonymize("text for synonymize");
или
$subject = "text for synonymize";
$my_synonym[] = synonymize($subject);
как-то так.
|
|
|
|