PHP - 使用composer autoloader扩展类会导致重新声明错误

时间:2016-05-13 05:09:03

标签: php inheritance composer-php autoloader

我正在学习如何在自己的课程中使用作曲家。 所以我有这个结构结构

我使用的是PHP 5.5.30和Composer 1.1.0

  
      
  • 全文      
        
    • test.php的
    •   
    • composer.json
    •   
    • 供应商/      
          
      • autoload.php
      •   
      • jarouche /      
            
        • jarouche.php
        •   
        • jarouche2.php
        •   
      •   
    •   
  •   

所以,我有

  test.php
  <?php
      require_once('vendor/autoload.php');
      use jarouche\jarouche2;

      $teste = new jarouche2();
      $teste->teste();
   ?>
   jarouche.php

   <?php

       namespace jarouche;

       class jarouche{

           public function teste(){
               echo 'jarouche';
           }

        }
   ?>
  jarouche2.php

   <?php

       namespace jarouche;

       class jarouche2 extends jarouche{

           public function teste(){
               echo 'jarouche2';
           }

        }
   ?>
  composer.json

  {
    ...

          "autoload": {
                        ...
                        "psr-4": {"jarouche\\": "vendor/jarouche"
           }
   }
But, when I run test.php I got this error "Fatal error: Cannot redeclare class jarouche\jarouche2 in C:\xampp\htdocs\Pdf\vendor\jarouche\jarouche2.php on line 6"

我试过放if (!class_exists('MyClass')) in jarouche2.php,试图更新作曲家......没有用。

我的错误是什么?

1 个答案:

答案 0 :(得分:0)

出于某种原因,我做了一个作曲家自我更新,现在它正在运作!