Php 我可以在另一个类中包含类为的文件吗?
我已经测试了这些代码,并给出了结果 //选项a的表列表 但我想知道上面这些类是否以OOP类的有效方式运行?因为类内容在类文件中运行,因为它是通过content.php包含的 我对OOP还是新手Php 我可以在另一个类中包含类为的文件吗?,php,Php,我已经测试了这些代码,并给出了结果 //选项a的表列表 但我想知道上面这些类是否以OOP类的有效方式运行?因为类内容在类文件中运行,因为它是通过content.php包含的 我对OOP还是新手 提前感谢。我相信在content.php中,假设在前面的代码行中设置了$option,那么开关块应该如下所示: file.php class file{ function include_file($file_name){ include($file_name); } }
提前感谢。我相信在content.php中,假设在前面的代码行中设置了
$option
,那么开关
块应该如下所示:
file.php
class file{
function include_file($file_name){
include($file_name);
}
}
$file = new file;
$file->include_file('content.php');
----------------------------------
content.php
include('content_class.php');
$content = new content;
switch($option){
case 'a':
$content->table_list($option);
break;
}
----------------------------------
content_class.php
class content{
function table_list($option){
echo 'table list for option : '.$option;
}
}
因为
表\u列表
是类内容
的成员。否则,我相信上面声明的类是有效的。不过,我不确定在FIL.PHP中的一个类中是否包含文件。如果没有其他东西,它可能对您没有任何帮助。回答标题中的问题:是的,类基本上可以在任何范围内定义,并且包含可以嵌套在函数中。因此,在您已经定义的内容类是完全有效的
也就是说,代码有三个方面:
1)您正在引用表格列表
作为变量*($table\u列表
),而不是内容
对象上的方法:
switch ($option) {
case 'a':
$content->table_list($option);
break;
}
2)当您从一个方法(在本例中是$file->include\u file
方法)中包含一个文件时,该方法的执行是在该方法的内部进行的。这意味着switch($option)
行中的$option
将是未定义的(因为它在脚本中的任何地方都没有定义)。您可能需要从、从传递给原始方法的参数或使用global
关键字将其拉入:
switch($option){
case 'a':
$content->table_list($option);
break;
}
3):如果只是将$option
传递给该方法,则可能不需要switch语句,尽管您的示例可能过于简单
global $option;
switch($option){ ...
最后,这些示例显然是非常简单的类,因此我无法真正判断它们是否是好的对象,但现在它们作为对象没有任何用途,因为它们没有。(因此,它们现在与相同——换句话说,它们不需要任何对象范围。)
*请注意,在PHP中,这不是语法错误。相反,它计算$table_list
的值,然后尝试用该名称调用函数。如果$table\u list
包含“a”,它将尝试调用a()
当我看到include()的类包装时,我感到很不舒服。是的,类定义没有作用域,所以它们总是可以访问的。您可能希望一次要求_
您的类定义,而不是包含它们,否则您可能会遇到重复的定义错误。我将其理解为:“我可以在另一个类中包含一个类文件吗?从那时起我可以使用这个类吗?”。可能是弄错了。@FinalForm:),这就是为什么我想知道这些是OOP类的有效方法吗?因为它给了我正确的结果。@froditus:ack,这可以也会起作用,但是你可能想看看\uuuuuAutoload
或者更好的是改进的spl\uAutoload\uRegister
。是的,我已经更新了输入错误。它应该是$content->table\u list($option)
global $option;
$content->table_list($option);