Тестирование, если свойство существует

Предполагаю, что вы выполняете все вышеуказанного кода каждый раз, когда вы что-то пишете в файл. Каждый раз, когда поток для файла открывается, его указатель поиска позиционируется в начале, поэтому все записи в конечном итоге переписывают то, что было до этого.

Вы можете решить проблему двумя способами: либо с удобным

file2 = new StreamWriter("c:/file.txt", true);

или путем прямого позиционирования указателя потока:

file2 = new StreamWriter("c:/file.txt");
file2.BaseStream.Seek(0, SeekOrigin.End);
58
задан Paulw11 14 April 2014 в 01:49
поделиться

2 ответа

Потому что property_exists сообщит вам, даже если это определенное свойство класса / объекта, где as isset не делает этого различия. например:

class A {
  protected $hello;
}

class B {

}

при использовании property_exists ($ this, 'hello') в классе A вернет true , при использовании в классе B вернет false . isset вернет false в обоих экземплярах.

80
ответ дан 24 November 2019 в 19:02
поделиться

Это зависит от того, как работает ваша программа, но если вы прочитаете комментарии в руководстве, это поможет объяснить особенности функции.

http://php.net/manual/en/function.property-exists.php

Важная часть находится здесь:

В документации отсутствует важный случай новой недвижимости вы добавлять к объектам во время выполнения. По факту, property_exists вернет истину, если Вы спрашиваете его о таких свойствах.

5
ответ дан 24 November 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: