/** * @param PropertyFactory|string $property * @param string|null $visibility * @param bool|null $static * @param mixed|null $default * * @return ClassFactory */ public function addProperty($property, $visibility = 'public', $static = null, $default = null) { if (!$property instanceof PropertyFactory) { $property = new PropertyFactory($property, $visibility); $property->isStatic($static); if (func_num_args() === 4) { $property->setDefault($default); } } $this->properties[] = $property; return $this; }