Php类引用实例

时间:2013-12-26 16:30:08

标签: php html oop

背景:我正在学习C#的过程中,工作决定我也会选择php来解决这个问题。

我把一个非常简单的例子汇总在一起来说明一点。在C#中,我可以引用一个类,在这种情况下private Car car创建该类的实例new Car();,然后继续使用其中的功能car.GasMilage();

Public abstract class vehicle
{
    private Car car = new Car();
    car.GasMilage();
}

Public class Car
{
    private string color;
    private int fuelCapacity;
    private int milesDriven;

    public double GasMilage()
    {
        double mpg = milesDriven/fuelCapacity;
        return mpg;
    }
}

我开始创建以下php类,它最终遍历一个目录并填充我的标签页以及每个标签中的项目数。这个数字每周都有所不同。我想要做的是重用这个类中的函数,所以我想我的问题变成了我需要将这个类分解为每个只有一个函数的小类,还是我可以引用特定函数的某些输出?我有几本书讨论创建类,函数等,但我没有找到关于所有部分如何组合在一起的好信息,类似于C#示例。谢谢。

<?php
/*Establishes an array containing all the names of the centers*/
class SiteDirectories
{
/*Defines an array with a variable named Sites*/
public $Sites = array();
/*Variable for keeping count of patients within directories*/
public $count=0;

/*A foreach loop that loops through the contents of directory Dir, each directory it finds it assigns a temp variable Site*/
function arrayBuilder()
{
    /*Defines a variable Dir a directory path*/
    $Dir = "Photos/*";
    /*Loops through each directory within the Photos directory, uses Site to hold the temp variable*/
    foreach (glob($Dir) as $Site)
    {   
        /*Takes the basename of the current directory and calls it SiteName*/
        $SiteName = basename($Site)." (".$this->ptCount($Site).")";
        /*Adds the SiteName to the array list Sites*/
        array_push($this->Sites, $SiteName);
        $this->count = 0;           
    }
}

function ptCount($Site)
{       
    foreach(glob($Site."/*") as $dir)
        {
            $this->count = $this->count + 1;
        }
        return $this->count;            
}

function tabCreator()
{
    $ct = 1;
    foreach($this->Sites as $tab)
    {           
        echo "<li><a href='#tab$ct'>".$tab."</a></li>";
        $ct = $ct + 1;          
    }
}
}

$SiteNames = new SiteDirectories;
$SiteNames->arrayBuilder();
echo $SiteNames->tabCreator();
?>

在我的.php网站中引用它作为以下

  <ul class='tabs'>
    <?php
        include 'SiteDirectories.php';
    ?>
  </ul>

我不是张贴让有人向我提供“这是你应该键入的代码”而是生成关于将OOP原则从C#链接到php的讨论,因为目前我一直无法进行连接。谢谢。

2 个答案:

答案 0 :(得分:0)

我认为你不做真正的OOP但是在这里,唯一要做的就是调用你创建的函数。唯一要做的就是将类定义下的三行迁移到模板文件中。 背后的逻辑是你定义了一次你的类,但你每次需要它时都会使用它。

然后在PHP中引用一个类就像在C#中一样,但变量必须以$开头。 如果你想在PHP中使用C#定义的类,你必须在PHP中重写它,因为即使它可以将这样的C#代码链接到PHP,它也会是一种过度杀伤......

答案 1 :(得分:0)

  

我不是张贴让有人向我提供“这是你应该键入的代码”生成关于将OOP原则从C#链接到php的讨论......

作为一个概念,OOP在各种语言中非常相似。它的语法不同。我不是C#开发人员,但你可以将C#中绝大多数的OOP原则带到PHP中。

  

...我是否需要将这个类分解为每个只有一个函数的小类......

通常,只要您的类中的方法彼此密切相关以及该类设计要处理的作业,就不会。

  

...或者我可以仅引用特定功能的某些输出?

您可以通过以下方式使用PHP类:

$siteDirectories = new SiteDirectories();

然后你可以调用这样的方法,并且能够“仅引用特定函数的某些输出”。

$siteDirectories->arrayBuilder();

注意:我提醒您不要在类中使用公共属性,而是选择访问者。这些属性将为private $sites;(或protected sites;),您可以向该类添加getSites()方法($count也相同)。

EXTRA PHP: The Right Way是新老PHP开发人员的绝佳参考。我强烈建议您在开始使用PHP时进行检查。