理解php

时间:2016-02-11 13:20:37

标签: php namespaces type-hinting

我对类型提示和命名空间没有太多直观的了解。所以我编写了以下代码来处理这两个概念。我有三个php页面在同一个目录中包含三个类。它们是 -

  

1.Student.php

     

2.Institution.php

     

3.enroll.php。

我想同时使用Student and Institution类中的enroll类。我在namespaces类中应用Student and Institutionuse在注册类中但是这里的东西不太正确。我收到了这些错误:

  

警告:非复合名称'Student'的use语句没有   第2行的C:\ xampp \ htdocs \ practice \ typehint \ enroll.php中的效果

     

警告:非复合名称'Institute'的use语句没有   第3行的C:\ xampp \ htdocs \ practice \ typehint \ enroll.php中的效果

     

致命错误:未找到班级“学生”   第10行的C:\ xampp \ htdocs \ practice \ typehint \ enroll.php

任何人都可以解释这里有什么问题以及如何解决这个问题?

student.php

namespace Student;
 class Student{

     public $name;

     publci function __construct($value){
        $this->name=$value;
     }

 }

institute.php

namespace Institute;
   class Institute{

      public $institute;
      public function __construct($val){
         $this->institute=$val;
      }
   }

enroll.php

use Student;
use Institute;
  class enroll{

      public function __construct(Student $student,Institute $institute){
         echo $student->name.' enrolled in '.$institute->institute.' school .';
      }
  }
  $student=new Student('zami');
  $institute=new Institute('Government Laboratory High School');

  $enroll=new enroll($student,$institute);

1 个答案:

答案 0 :(得分:1)

您还必须先include其他文件。否则,PHP不知道在哪里寻找您正在寻找的命名空间。

enroll.php:

<?php
include "student.php";
include "institute.php";
use Student;
use Institute;
  class enroll{

      public function __construct(Student $student,Institute $institute){
         echo $student->name.' enrolled in '.$institute->institute.' school .';
      }
  }
  $student=new Student('zami');
  $institute=new Institute('GLAB');

  $enroll=new enroll($student,$institute);