Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Переписать вдребезги и напополам (VB -> php)
 
 автор: Lisnerpa   (15.09.2005 в 14:33)   письмо автору
 
 

Имею работающую задачку, запрограммированную в VB.
Хочется предоставить ее людям, посему думаю переписать ее на php.
В VB я понимаю, что и как, а вот php только вчерась поставил (спасибо этому форуму).
Допоможите, кто может! :)

В VB имеется модуль кода (там константы, глобальные переменные и общие функции) и несколько модулей форм (со воими переменными и функциями).
Запускается базовая форма, с нее в зависимости от выбора пользователя стартует какая-либо из других форм, в которых пользователь затем что-то читает, что-то вводит, затем закрывает-сохраняет. Основной код сосредоточен в этих формах. Таково вкратце описание структуры имеющегося кода.
Каким образом его естественнее и быстрее переписать на php?
Конкретные вопросы:
1. С чего начать?
2. Сколько файлов php вы бы заложили в проект?
Напрашивается решение - столько же, сколько было отдельных файлов в VB.Но нет ли тут подводных камней?

Кто-нибудь переписывал на php реализованные задачи?
Поделитесь пожалуйста опытом.

Всем удач. :)

   
 
 автор: cheops   (15.09.2005 в 16:32)   письмо автору
 
   для: Lisnerpa   (15.09.2005 в 14:33)
 

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

Проект на VB был для Internet или Windows-приложением?

   
 
 автор: XPraptor   (16.09.2005 в 11:42)   письмо автору
 
   для: cheops   (15.09.2005 в 16:32)
 

cheops, В VB нет разницы для инета или для винды, код всеравно программный на VB.
А на счет взятия идеи cheops прав! Структуру кода из VB никогда не переделаешь в PHP (если конечно прога не юзает одни лишь циклы и ифы).
Поэтому нужно брать каждую отдельную возможность программы и реализовывать ее на PHP. А если есть сложные конструкции, котороые выполняют какие-либо рассчеты и преобразования, то нужно детально вникнуть как все происходит и потом только повторять это на PHP.
Потому, как PHP может совсем по другому реализовывать код, который написан на другом языке программирования.

   
 
 автор: cheops   (16.09.2005 в 13:00)   письмо автору
 
   для: XPraptor   (16.09.2005 в 11:42)
 

>cheops, В VB нет разницы для инета или для винды, код
>всеравно программный на VB.
С большой натяжкой это можно сказать и про PHP, однако это будет передёргиванием. Приложение на VB либо ориентировано на Windows либо на работу в составе IIS и разница имеется.

   
 
 автор: Lisnerpa   (16.09.2005 в 14:32)   письмо автору
 
   для: cheops   (15.09.2005 в 16:32)
 

Это проект под виндовс.
Практически да... в нем кроме циклов, ифов и селект касе ничего и нет.
Ну форм шоу. естественно.
все же пробую подойти линейно - беру коды и стараюсь переделать под php.
дело в том, что для незнающего языка ИНАЧЕ переписать на нем, чем было имеющееся - это кажется сложнее.
Знаки доллара - да...

   
 
 автор: Lisnerpa   (16.09.2005 в 14:42)   письмо автору
 
   для: Lisnerpa   (15.09.2005 в 14:33)
 

Как описать глобальную переменную типа массив?

в VB я это сделал так:
Global z_txt() As String 'полный текст отрывка

Запись
global $z_txt[]; // полный текст отрывка (массив строк)
вызывает ошибку на линии (сидела бы он а себе в парке и не выезжала б!)

Или этого вообще не следует делать?
Но мне нужно работать с содержимым этого массива в разных элементах программы.

   
 
 автор: XPraptor   (16.09.2005 в 16:29)   письмо автору
 
   для: Lisnerpa   (16.09.2005 в 14:42)
 

В PHP все переменные объявляются без скобок, хоть массив, хоть одиночная. global $z_txt;
И в коде можешь присваивать потом что хочешь: $z_txt[0]="string 1";
Если используешь объявленную ранее глобальную переменную внутри function, то нужно и в функции написать global $z_txt;

   
 
 автор: cheops   (16.09.2005 в 19:26)   письмо автору
 
   для: Lisnerpa   (16.09.2005 в 14:42)
 

Вне функций все переменные глобальные, для того, чтобы переменные были глобальными и в функции следует обявить её внутри функции с атрибутом global
<?php
function func()
{
  global 
$arr;
  
$arr = array();
}
?>

Важное отличие - переменные будут глобальными только в пределах одного файла и одной сессии - переход к другим файлам или перезагрузка страницы приводит к сбросу данных, для того, чтобы даные были действительно глобальными следует хранить данные, либо в суперглобальных массивах, либо в файлах, базе данных и т.п. Подробности в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=298

   
 
 автор: Lisnerpa   (16.09.2005 в 20:33)   письмо автору
 
   для: cheops   (16.09.2005 в 19:26)
 

Спасибо, буду иметь все это в виду.
Пока что я не буду проверять, что и как, кода еще много надо сделать.
Посложнее, чем в VB получается, ну и понятно, почему.

   
 
 автор: Lisnerpa   (16.09.2005 в 20:39)   письмо автору
 
   для: Lisnerpa   (15.09.2005 в 14:33)
 

Следующий вопрос про функции работы со строками и оператор из замка Иф.

Почему я не могу написать:
if (substr($fvs,0,4) = "Тур:")
?
Это вызывает ошибку.

Приходится задавать дополнительную переменную, т.е.писать:
...
$l4=substr($fvs,0,4);
if ($l4 = "Тур:")
...
это не вызывает ошибки.
В принципе я не против, хотя в VB такие однострочные конструкции без проблем.

   
 
 автор: cheops   (16.09.2005 в 21:27)   письмо автору
 
   для: Lisnerpa   (16.09.2005 в 20:39)
 

PHP является С-подобным языком, т.е. оператор сравнения для него ==, а = используется для присваивания. Т.е. следует писать
<?php
  
if (substr($fvs,0,4) == "Тур:")
?>

Код
<?php
  
if ($l4 "Тур:")
?>

максирует ошибку, так как операция присваивания всегда возвращает TRUE.

PS Под новые вопросы, лучше заводить новые темы.

   
 
 автор: Lisnerpa   (16.09.2005 в 20:48)   письмо автору
 
   для: Lisnerpa   (15.09.2005 в 14:33)
 

Ну и про открытие файлов вопрос.

Есть желание в некоторой функции открыть файл, считать из него строки, проанализировать их и наполнить из них кое-какой информацией массивы.

Выполняю по книжке(как мне кажется):
function Vari_Inp($fil_v)
{
$df = fopen ($fil_v,"r"); //открываем файл вариантов для голосования для чтения
if(!$df) // если файл отсутствует
{
echo("Ошибка открытия файла.");
return ""; //возвращ.значение ""
}
//дальнейшее тело функции
}

Далее в программе пишем:
$v=Vari_Inp("C:\Program Files\VB_5\My_Proj\Dopis_Otr\DopOtr_Turs\Zadanie.txt");
echo($v);

Ошибок в коде не выдается.
Но при запуске кода на выполнение получается не совсем корректный результат.
Если файл существует - все работает как надо.
Но если задано несущ. имя файла, то вместо надписи "Ошибка открытия файла" получаем побольше слов:

Warning: fopen(C:\Program Files\VB_5\My_Proj\Dopis_Otr\DopOtr_Turs\Zadanie_2.txt) [function.fopen]: failed to open stream: No such file or directory in C:\www\www1\fun.php on line 5
Ошибка открытия файла.

От двух первых строк хотелось бы избавиться, раз уж такой вариант описан в коде.

Уверен, что и на эти вопросы вы ответите, уважаемые форумчане.
Удачных выходных всем!
:)

   
 
 автор: cheops   (16.09.2005 в 21:34)   письмо автору
 
   для: Lisnerpa   (16.09.2005 в 20:48)
 

Да PHP говорлив (правда степень его разговорчивости настраивается в конфигурационном файле php.ini), для того, чтобы подавить вывод таких предупреждений следует либо подавить вывод при помощи символа @ http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=4389,
<?php
  $df 
= @fopen ($fil_v,"r"); //открываем файл вариантов для голосования для чтения
?>

Либо проверить файл на существование перед окрытием при помощи функции file_exists() http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5381
<?php
  
if(file_exists($fil_v))
  {
     
// Файл существует
  
}
  else
  {
    
// Файл не существует
  
}
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования