Этот тип подсказки работает только для проверки аргументов функции; Вы не можете объявить, что переменная PHP всегда должна быть определенного типа. Это означает, что в вашем примере $ bur должен иметь тип Bur, когда вызывается «blah», но $ bur может быть переназначен на значение не Bur внутри функции.
Подсказка типов работает только для имен классов или интерфейсов; вы не можете объявить, что аргумент должен быть целым числом, например.
Один раздражающий аспект подсказки типов в PHP, который отличается от Java, состоит в том, что значения NULL не допускаются. Так что если вы хотите передать NULL вместо объекта, вы должны удалить подсказку типа и сделать что-то вроде этого в верхней части функции:
assert('$bur === NULL || $bur instanceof Bur');
РЕДАКТИРОВАТЬ: Этот последний абзац не применяется с PHP 5.1; теперь вы можете использовать NULL в качестве значения по умолчанию, даже с подсказкой типа.
РЕДАКТИРОВАТЬ: Вы также можете установить расширение SPL Type Handling , которое дает вам типы оболочки для строк, целых, чисел с плавающей запятой, логических и перечислений.
РЕДАКТИРОВАТЬ: Вы также можете использовать "массив", начиная с PHP 5.1, и "вызываемый", начиная с PHP 5.4.
РЕДАКТИРОВАТЬ: Вы также можете использовать "string", "int", "float" и "bool" начиная с PHP 7.0.