echo date("d.m.Y H:i:s T", time());
без указания таймзоны.date_default_timezone_get()
ini_get('date.timezone')
<?xml version="1.0" encoding="UTF-8"?>
<Товары>
<Товар>
<Ид>1</Ид>
<Наименование>
<НазваниеТовара>Тестовый товар 1</НазваниеТовара>
</Наименование>
<БазоваяЕдиница>
<Пересчет>
<Цена>200</Цена>
</Пересчет>
</БазоваяЕдиница>
<ЗначенияРеквизитов>
<ЗначениеРеквизита>
<Описание>Описание товара</Описание>
</ЗначениеРеквизита>
</ЗначенияРеквизитов>
<Значения>
<Картинка>0001.png</Картинка>
</Значения>
</Товар>
<Товар>
<Ид>1</Ид>
<Наименование>
<НазваниеТовара>Тестовый товар 2</НазваниеТовара>
</Наименование>
<БазоваяЕдиница>
<Пересчет>
<Цена>200</Цена>
</Пересчет>
</БазоваяЕдиница>
<ЗначенияРеквизитов>
<ЗначениеРеквизита>
<Описание>Описание товара</Описание>
</ЗначениеРеквизита>
</ЗначенияРеквизитов>
<Значения>
<Картинка>0002.png</Картинка>
</Значения>
</Товар>
</Товары>
$xml = simplexml_load_file('data.xml');
foreach ($xml->xpath('//Картинка') as $img) {
echo $img . "\n";
}
b.bar()
), то он выполняется в контексте этого объекта b
. super.foo()
пропускает первый шаг в поиске свойства, берет метод сразу из прототипа прототипа и тоже выполняет его в контексте b
. А в контексте b
метод bar у нас переопределяет родительский метод, поэтому у нас получается бесконечная рекурсия, которая насильно обрывается движком.this
в A.foo
ссылается не на A
, а на инстанс B
. А поиск метода идёт по цепочке прототипов, начиная сверху, поэтому до A.bar никогда не доходит.let x: Int! = 42
let y = x // y has type Int?
func f(_ arg: Int) { print(arg) }
let x: Int! = 42
let y: Int = x
let z = x as Int
f(x)
struct Dog {
func bark() { print("Woof!") }
}
let d: Dog! = Dog()
d.bark()
class Foo {
var x: Int!
init() {
// I can't setup x at this point :(
x = nil
}
func setup(x newValue: Int) { x = newValue }
func foo() {
// I promise that setupX() will be called before
// I will deal with x as if it was always present
print(x * 2)
}
}
let x: Int! = 42
@implicitlyUnwrapped let x: Optional<Int> = .some(42)