|
|
|
| Имею работающую задачку, запрограммированную в VB.
Хочется предоставить ее людям, посему думаю переписать ее на php.
В VB я понимаю, что и как, а вот php только вчерась поставил (спасибо этому форуму).
Допоможите, кто может! :)
В VB имеется модуль кода (там константы, глобальные переменные и общие функции) и несколько модулей форм (со воими переменными и функциями).
Запускается базовая форма, с нее в зависимости от выбора пользователя стартует какая-либо из других форм, в которых пользователь затем что-то читает, что-то вводит, затем закрывает-сохраняет. Основной код сосредоточен в этих формах. Таково вкратце описание структуры имеющегося кода.
Каким образом его естественнее и быстрее переписать на php?
Конкретные вопросы:
1. С чего начать?
2. Сколько файлов php вы бы заложили в проект?
Напрашивается решение - столько же, сколько было отдельных файлов в VB.Но нет ли тут подводных камней?
Кто-нибудь переписывал на php реализованные задачи?
Поделитесь пожалуйста опытом.
Всем удач. :) | |
|
|
|
|
|
|
|
для: Lisnerpa
(15.09.2005 в 14:33)
| | На число файлов лучше не смотреть, так как иногда повторяющиеся элементы проще вынести в один файл и включать в страницу при помощи конструкции include. Я бы посоветовал бы сильно не завязываться на старый проект и взять только идею, так как будет соблазн использовать старый код и вы рискуете провести множество незабываемых часов поиска причин не работы кода, так как обязательно где-нибудь позабудите поставить знак $ перед именем переменной - если вы только начинаете работать с PHP - это вас будет преследовать в начале постоянно.
Проект на VB был для Internet или Windows-приложением? | |
|
|
|
|
|
|
|
для: cheops
(15.09.2005 в 16:32)
| | cheops, В VB нет разницы для инета или для винды, код всеравно программный на VB.
А на счет взятия идеи cheops прав! Структуру кода из VB никогда не переделаешь в PHP (если конечно прога не юзает одни лишь циклы и ифы).
Поэтому нужно брать каждую отдельную возможность программы и реализовывать ее на PHP. А если есть сложные конструкции, котороые выполняют какие-либо рассчеты и преобразования, то нужно детально вникнуть как все происходит и потом только повторять это на PHP.
Потому, как PHP может совсем по другому реализовывать код, который написан на другом языке программирования. | |
|
|
|
|
|
|
|
для: XPraptor
(16.09.2005 в 11:42)
| | >cheops, В VB нет разницы для инета или для винды, код
>всеравно программный на VB.
С большой натяжкой это можно сказать и про PHP, однако это будет передёргиванием. Приложение на VB либо ориентировано на Windows либо на работу в составе IIS и разница имеется. | |
|
|
|
|
|
|
|
для: cheops
(15.09.2005 в 16:32)
| | Это проект под виндовс.
Практически да... в нем кроме циклов, ифов и селект касе ничего и нет.
Ну форм шоу. естественно.
все же пробую подойти линейно - беру коды и стараюсь переделать под php.
дело в том, что для незнающего языка ИНАЧЕ переписать на нем, чем было имеющееся - это кажется сложнее.
Знаки доллара - да... | |
|
|
|
|
|
|
|
для: Lisnerpa
(15.09.2005 в 14:33)
| | Как описать глобальную переменную типа массив?
в VB я это сделал так:
Global z_txt() As String 'полный текст отрывка
Запись
global $z_txt[]; // полный текст отрывка (массив строк)
вызывает ошибку на линии (сидела бы он а себе в парке и не выезжала б!)
Или этого вообще не следует делать?
Но мне нужно работать с содержимым этого массива в разных элементах программы. | |
|
|
|
|
|
|
|
для: Lisnerpa
(16.09.2005 в 14:42)
| | В PHP все переменные объявляются без скобок, хоть массив, хоть одиночная. global $z_txt;
И в коде можешь присваивать потом что хочешь: $z_txt[0]="string 1";
Если используешь объявленную ранее глобальную переменную внутри function, то нужно и в функции написать global $z_txt; | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: cheops
(16.09.2005 в 19:26)
| | Спасибо, буду иметь все это в виду.
Пока что я не буду проверять, что и как, кода еще много надо сделать.
Посложнее, чем в VB получается, ну и понятно, почему. | |
|
|
|
|
|
|
|
для: Lisnerpa
(15.09.2005 в 14:33)
| | Следующий вопрос про функции работы со строками и оператор из замка Иф.
Почему я не могу написать:
if (substr($fvs,0,4) = "Тур:")
?
Это вызывает ошибку.
Приходится задавать дополнительную переменную, т.е.писать:
...
$l4=substr($fvs,0,4);
if ($l4 = "Тур:")
...
это не вызывает ошибки.
В принципе я не против, хотя в VB такие однострочные конструкции без проблем. | |
|
|
|
|
|
|
|
для: Lisnerpa
(16.09.2005 в 20:39)
| | PHP является С-подобным языком, т.е. оператор сравнения для него ==, а = используется для присваивания. Т.е. следует писать
<?php
if (substr($fvs,0,4) == "Тур:")
?>
|
Код
<?php
if ($l4 = "Тур:")
?>
|
максирует ошибку, так как операция присваивания всегда возвращает TRUE.
PS Под новые вопросы, лучше заводить новые темы. | |
|
|
|
|
|
|
|
для: 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
Ошибка открытия файла.
От двух первых строк хотелось бы избавиться, раз уж такой вариант описан в коде.
Уверен, что и на эти вопросы вы ответите, уважаемые форумчане.
Удачных выходных всем!
:) | |
|
|
|
|
|
|
|
для: 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
{
// Файл не существует
}
?>
|
| |
|
|
|