__construct() protected méthode

protected __construct ( string $name )
$name string The name of this structural element
 /**
  * @param string $namespace
  * The namespace in this element's scope
  *
  * @param string $name
  * The name of this structural element
  *
  * @param int $alternate_id
  * An alternate ID for the elemnet for use when
  * there are multiple definitions of the element
  */
 protected function __construct(string $namespace, string $name, int $alternate_id = 0)
 {
     assert(!empty($name), "The name cannot be empty");
     assert(!empty($namespace), "The namespace cannot be empty");
     assert($namespace[0] === '\\', "The first character of a namespace must be \\, but got {$namespace}");
     parent::__construct($name);
     $this->namespace = $namespace;
     $this->alternate_id = $alternate_id;
 }
 /**
  * @param FullyQualifiedClassName $fully_qualified_class_name
  * The fully qualified class name of the class in whic
  * this element exists
  *
  * @param string $name
  * A name if one is in scope or the empty string otherwise.
  *
  * @param int $alternate_id
  * An alternate ID for the element for use when
  * there are multiple definitions of the element
  */
 protected function __construct(FullyQualifiedClassName $fully_qualified_class_name, string $name, int $alternate_id = 0)
 {
     parent::__construct($name);
     $this->fully_qualified_class_name = $fully_qualified_class_name;
     $this->alternate_id = $alternate_id;
 }