PHP: cannot declare class because the name is already in use

前端 未结 6 795
南方客
南方客 2020-12-29 19:14

I have 5 scripts:

  1. database.php
  2. parent.php
  3. child1.php
  4. child2.php
相关标签:
6条回答
  • 2020-12-29 19:20

    Another option to include_once or require_once is to use class autoloading. http://php.net/manual/en/language.oop5.autoload.php

    0 讨论(0)
  • 2020-12-29 19:23

    You should use require_once and include_once. Inside parent.php use

    include_once 'database.php';
    

    And inside child1.php and child2.php use

    include_once 'parent.php';
    
    0 讨论(0)
  • 2020-12-29 19:23

    Class Parent cannot be declared because it is PHP reserved keyword so in effect it's already in use

    0 讨论(0)
  • 2020-12-29 19:36

    try to use use include_onceor require_once instead of include or require

    0 讨论(0)
  • 2020-12-29 19:38

    you want to use include_once() or require_once(). The other option would be to create an additional file with all your class includes in the correct order so they don't need to call includes themselves:

    "classes.php"

    include 'database.php';
    include 'parent.php';
    include 'child1.php';
    include 'child2.php';
    

    Then you just need:

    require_once('classes.php');
    
    0 讨论(0)
  • 2020-12-29 19:40

    I had this problem before and to fix this, Just make sure :

    1. You did not create an instance of this class before
    2. If you call this from a class method, make sure the __destruct is set on the class you called from.

    My problem (before) :
    I had class : Core, Router, Permissions and Render Core include's the Router class, Router then calls Permissions class, then Router __destruct calls the Render class and the error "Cannot declare class because the name is already in use" appeared.

    Solution :
    I added __destruct on Permission class and the __destruct was empty and it's fixed...

    0 讨论(0)
提交回复
热议问题