Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15294
Рейтинг: 1518
#61: 2007-06-20 10:18:50 ЛС | профиль | цитата
что они делать должны?
карма: 26
0
Главный модератор
Ответов: 2997
Рейтинг: 395
#62: 2007-06-20 22:56:35 ЛС | профиль | цитата

Оператор включения require

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

Однако в некоторых случаях отсутствие включаемого файла является катастрофой. Если PHP не сможет найти файла с функциями, но не прекратит работу, то возникнет масса проблем. Для того чтобы предотвратить эту ситуацию, следует использовать оператор require вместо include

Предупреждение возникновения дубликатов.

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


[size=-2]------ Добавлено в 22:56
Лучше если в компоненте Include появится свойство mode, принимающее значения:
normal, require, normal_once, require_once. Или с другими именами - лишь бы вставляли нужный оператор.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Администрация
Ответов: 15294
Рейтинг: 1518
#63: 2007-06-21 10:49:19 ЛС | профиль | цитата
добавлено
карма: 26
0
Главный модератор
Ответов: 2997
Рейтинг: 395
#64: 2007-06-21 11:08:03 ЛС | профиль | цитата
После Upload с SVN перестал генерит WEB проекты:
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
файлы: 1error_505C65C4.jpg [28.6KB] [638]
Администрация
Ответов: 15294
Рейтинг: 1518
#65: 2007-06-21 11:13:18 ЛС | профиль | цитата
Мне эта ошибка совершенно ни о чем не говорит. Обновление одного единственного компонента к такому привести не могло. Вывод: информация предоставлена не вся.
карма: 26
0
Главный модератор
Ответов: 2997
Рейтинг: 395
#66: 2007-06-21 12:21:30 ЛС | профиль | цитата
Точно сказать не могу, но видимо upload был выполнен начиная с 350-351 ревизии.

[size=-2]------ Добавлено в 12:21
Перераспаковал всё по-новой, сделал update c SVN до 353 ревизии - работает!
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 9906
Рейтинг: 351
#67: 2007-06-21 12:24:51 ЛС | профиль | цитата
Магия, однако...
карма: 9

0
Администрация
Ответов: 15294
Рейтинг: 1518
#68: 2007-06-21 12:56:38 ЛС | профиль | цитата
да уж...
карма: 26
0
Главный модератор
Ответов: 2997
Рейтинг: 395
#69: 2007-06-22 13:16:14 ЛС | профиль | цитата
Хотелось бы, чтобы компонент Die данные из потока тоже принимал, а не только из свойства Text.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Администрация
Ответов: 15294
Рейтинг: 1518
#70: 2007-06-22 13:36:41 ЛС | профиль | цитата
добавлено
карма: 26
0
Главный модератор
Ответов: 2997
Рейтинг: 395
#71: 2007-06-24 11:12:53 ЛС | профиль | цитата
Manual PHP писал(а):

mkdir -- Создаёт директорию
Описание
bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )

Раз функция возвращает значение, которое можно проверить, то логично было бы ожидать что такая схема:

Add(EntryPoint,13332310,21,105)
{
link(onStart,5500409:doMkDir,[])
}
Add(DirTools,5500409,67,105)
{
DirName="test"
link(onEnd,12051890:doCompare,[])
}
Add(If_else,12051890,116,105)
{
}
Вернёт такой код:

<?php

if(mkdir("test")) {
}

?>
а не такой:

<?php

mkdir("test");
if("") {
}

?>

[size=-2]------ Добавлено в 11:14
Схема:
code_1591.txt
Код:

<?php


function validate() {
$val5 = "Text";
echo $val5;
}
validate();
echo $val5;

?>
результат выполнения:
IE6 писал(а):

Text

А по логике Delphi1 можно было бы ожидать другой результат:

TextText


[size=-2]------ Добавлено в 22:01
Не ли ещё в пакете компонент, чтобы получить следующий код:

class NoFileExistsException extends Exception {

public function informativeMessage(){
$message = "The file, '".$this->getMessage()."', called on line ".
$this->getLine()." of ".$this->getFile().", does not exist.";
return $message;
}

}

[size=-2]------ Добавлено в 11:12
Пока нет ответов - подправил для себя компонент Function (вызов функции), добавив к нему свойство Mode:

[Property]
...
Mode=Тип описания кода: function - обычное описание, class - описание класса|14|0|function,class
и собственно изменил скрипт:

...
println(code(Mode),' ', code(Name), '(', s, ') {')
...
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
файлы: 1code_1591.txt [960B] [859]
Ответов: 9906
Рейтинг: 351
#72: 2007-06-24 11:26:35 ЛС | профиль | цитата
Nic, чего то мне кажется, что у Dilma дома с инетом проблемы
карма: 9

0
Главный модератор
Ответов: 2997
Рейтинг: 395
#73: 2007-06-25 10:17:10 ЛС | профиль | цитата
Человек он молодой, а молодое дело понять можно.

[size=-2]------ Добавлено в 16:22
Чтобы соорудить описание класса пришлось сделать элемент hiClassVar.hws:

func doDefine()
println(code(Type), ' ', '$' + code(Name), ';')
event(onDefine)
end

func doSet(_data)
println('$this->' + code(Name), ' = ', _data, ';')
end

func Value()
return('$this->' + code(Name))
end
и ClassVar.ini:

[About]
Version=1.0
Author=Nic
Mail=nic@savelovo.net

[Type]
Class=Element
Info=Переменная класса
Tab=PHP

[Property]
Name=Имя определяемой в классе переменной|2|
Type=Тип переменной класса:public - общего доступа, protected - защищённая, private - локального доступа|14|0|public,protected,private

[Methods]
doDefine=Определяет в рамках класса указаное имя переменной|1|
doSet=Устанавливает значение переменной|1|
onDefine=Событие происходит всякий раз после определения переменной в классе|2|
Value=Возвращает значение переменной|3|
Схема:

Add(EntryPoint,5992085,21,105)
{
link(onStart,9141555:doPrint,[])
}
Add(MultiElementEx,9141555,70,105)
{
CodeType=1
}
BEGIN_SDK
Add(EditMultiEx,10680822,6,6)
{
WorkCount=#7:doPrint|
Width=356
Height=172
link(doPrint,1628728:doPrint,[])
}
Add(Function,1628728,35,35)
{
Name="WFDocument"
Mode=1
link(onPrint,13581855:doEvent,[])
}
Add(Function,445813,175,42)
{
Args=1
Name="setFilename"
link(onPrint,4497108:doData,[])
}
Add(DoData,4497108,238,42)
{
link(onEventData,9813299:doSet,[])
link(Data,445813:Arg1,[(244,37)(220,37)(220,86)(181,86)])
}
Add(ClassVar,9813299,294,35)
{
Name="filename"
Type=2
}
Add(Hub,13581855,84,35)
{
OutCount=3
link(onEvent1,9813299:doDefine,[])
link(onEvent2,445813:doPrint,[])
link(onEvent3,8595123:doPrint,[(149,55)(149,97)])
}
Add(Function,8595123,182,91)
{
Name="getFilename"
link(onPrint,6944616:doData,[])
}
Add(DoData,6944616,245,91)
{
link(onEventData,8595123:doReturn,[(287,97)(287,130)(170,130)(170,104)])
link(Data,9813299:Value,[(251,79)(300,79)])
}
END_SDK
Код:

<?php

class WFDocument() {
private $filename;

function setFilename($arg1) {
$this->filename = $arg1;
}

function getFilename() {
return($this->filename);
}
}

?>

[size=-2]------ Добавлено в 23:23
Нужна конструкция:

...
try {
...
} catch (e) {
...
}
...

[size=-2]------ Добавлено в 10:17
Простейший вариант компонента hiTry_catch.hws примерно выглядит так:

func doTry(data):java
fvar(od)
println('try {')
block.inclvl()
od = isndef(OutData) ? "" : _data_
event(onTry, od)
block.declvl()
println('} catch (',code(Exception),') {')
if(linked(onCatch))
block.inclvl()
event(onCatch, od)
block.declvl()
println('}')
end
end
и Try_catch.ini:

[About]
Version=1.0
Author=Nic
Mail=nic@savelovo.net

[Type]
Class=Element
Info=Конструкция Try - catch
Tab=PHP

[Property]
Exception=Объект функции обработчика исключений|2|
OutData=Данные, выдаваемые в поток событиями onTry и onCatch: InData - выдавать в поток копию данных со входа, NULL - не выдавать в поток никаких данных|4|0|InData,NULL

[Methods]
doTry=Определяет содержимое блока Try|1|
onTry=Событие происходит всякий раз при формировании блока Try|2|
onCatch=Событие происходит всякий раз при формировании блока исключения Catch|2|
Переделал из If_else - отсюда рудимент OutData. Но компонент не учитывает ситуацию, когда блоков catch несколько:

...
try {
...
} catch(UserException_1 $e)
...
} catch(UserException_2 $e)
...
}
...
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 9906
Рейтинг: 351
#74: 2007-06-25 10:32:14 ЛС | профиль | цитата
Nic, маленькая тонкость.
Если вводишь в среду элементы генерации/перехвата исключений, возможно следует позаботиться о блоках finally во всех остальных элементах.
Точно не скажу - зависит от языка.
Скажем в Дельфи - точно нужно.
А если бы это был C++ - точно не нужно, там это делается автоматом.
карма: 9

0
Главный модератор
Ответов: 2997
Рейтинг: 395
#75: 2007-06-25 10:35:17 ЛС | профиль | цитата
В PHP5 нет блока finally.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)