| Люблю то, что делаю!
 
 С нами с 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
 Сообщения: 33968
 Рейтинг: 6373
 
 
 
         
   | 
								
									|  Добавлено: 12/05/12 в 20:22 |  
 
							Да     | 
					
						|  |  | 
					
						|  | 
					
						| 
 
 С нами с 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);
 
как-то так.     | 
					
						|  |  | 
					
						|  |