Php 如何用扩展类中的另一个方法重写类中的方法

Php 如何用扩展类中的另一个方法重写类中的方法,php,laravel,Php,Laravel,我会尽力描述我的问题 假设我有一个类,其中有一个方法: class Article ... protected function getTitle(): string { return 'This is a title'; } 然后我有另一个类,扩展了前一个类 class CustomArticle extends Article protected function getTitle(): string { return 'This is a

我会尽力描述我的问题

假设我有一个类,其中有一个方法:

class Article

...

  protected function getTitle(): string
  {
      return 'This is a title';
  }
然后我有另一个类,扩展了前一个类

class CustomArticle extends Article

  protected function getTitle(): string
  {
      return 'This is a custom title';
  }
我有一个数组,包含第一个类的路径,使用

$classPaths = [Article::class]
然后,该信息存储在数据库中。另一个自定义类位于另一个文件夹(resources文件夹)中

我用这种方式激励全班同学

$article = new [path retrived from the database];
我希望发生的是,如果我更改数据库上的路径,我可以显示自定义类,覆盖该方法,同时也从Article类继承所有其他内容。我试图在数据库上复制ArticleCustom类的路径,但是当我运行程序时,我得到以下错误

Error : Class [the path to the custom class] not found
我尝试了所有路径:绝对路径、从内容根路径等等,都使用“/”和“\”

这可能是因为自定义类继承了原始类的名称空间,但它实际上不在该文件夹中吗?我尝试使用Article类的路径,并在其末尾添加“Custom”,但它不起作用

我看过laracast和其他stackoverflow帖子,但我找不到答案


正确的方法是什么?如果可能,保留我描述的结构。

这不是一个路径,而是一个完全限定的类名,你想要的类的完全限定的类名是你将要“新”的。。。但是,如果您没有为您想要的类存储FQCN,那么我不知道您在做什么。我现在在db上拥有的是article类的FQCN,当我使用new后跟FQCN时,它会正确地“newed”。我想实现的是,通过更改数据库上的FQCN,ArticlesCustom类将被“newed”从而覆盖该方法。我尝试在扩展文章的文章所在的文件夹中创建另一个类,如果我在该类上创建新类,一切都会正常。但是,如果我执行相同的过程,但在另一个文件夹中创建自定义类,它将不起作用,给我带来与快速更新之前相同的错误:我通过在psr-4自动加载中添加resources文件夹使其起作用,但这是一个非常糟糕的解决方案。。你知道如何使用应用程序名称空间之外的类吗?@jack你能告诉我自定义文章和文章的确切路径吗?请,名称空间不是路径,它是一个完全限定的类名,你想要的类的完全限定的类名是什么,这是你将要“新建”的。。。但是,如果您没有为您想要的类存储FQCN,那么我不知道您在做什么。我现在在db上拥有的是article类的FQCN,当我使用new后跟FQCN时,它会正确地“newed”。我想实现的是,通过更改数据库上的FQCN,ArticlesCustom类将被“newed”从而覆盖该方法。我尝试在扩展文章的文章所在的文件夹中创建另一个类,如果我在该类上创建新类,一切都会正常。但是,如果我执行相同的过程,但在另一个文件夹中创建自定义类,它将不起作用,给我带来与快速更新之前相同的错误:我通过在psr-4自动加载中添加resources文件夹使其起作用,但这是一个非常糟糕的解决方案。。你知道如何使用应用程序名称空间之外的类吗?@jack你能告诉我自定义文章和文章的确切路径吗