Php类唯一数据成员

时间:2013-07-18 15:27:02

标签: php class oop

我是PHP的新手,我们的教师只是教我们C ++ OOP,我想在PHP上尝试。

我正在用我的班级创建对象。

class TwitterUser {

    private $twittername;
    public function TwitterUser($a)
    {
        $this->twittername = $a;
        // echo $this->twittername;


    }

}



  $reader = new Spreadsheet_Excel_Reader($target_path);

$veriler = $reader->sheets[0]['cells'];
foreach($veriler as $veri)
{
if(!empty($veri[$sutun]) and $veri[$sutun]!="Twitter")
    {
    $kisiler[] = new TwitterUser(temizle($veri[$sutun]));

    }
}

我想要的是,如果一个对象与$twittername数据成员中的其他对象具有相同的字符串,则不要创建新对象。

2 个答案:

答案 0 :(得分:0)

此任务通常使用某种模型完成 - >数据库方法(如Doctrine),在这种情况下,您将模型数据保存到数据库中。数据库表应设计为不允许多个记录使用相同的名称,并且可以将强制执行和错误处理的逻辑构建到模型类中。

您可以通过纯PHP实现相同的目标,但它需要以某种方式存储现有实例,因此在创建新实例时,可以检查现有实例的唯一性。

答案 1 :(得分:0)

如果用户名是test,您不想添加对象吗?基本上你不能退出构造函数。只需添加一个简单的标志,只需添加一次“test”用户。

使用您的代码示例:

$testuserexists = false;
foreach($veriler as $veri)
{
    if(!empty($veri[$sutun]) and $veri[$sutun]!="Twitter" && $testuser == false)
    {
        $kisiler[] = new TwitterUser(temizle($veri[$sutun]));
        if ($veri[$sutun] == "Test")
            $testuserexists = true;

    }
}

或者,如果您尝试不重复:

foreach($veriler as $veri)
{
    if(!empty($veri[$sutun]) and $veri[$sutun]!="Twitter" && !isset($kisiler[$veri[$sutun]]))
    {
        $kisiler[$veri[$sutun]] = new TwitterUser(temizle($veri[$sutun]));
    }
}

我不知道temizle函数应该做什么,但基本上你可以将用户名指定为关联数组键,并通过在条件中添加isset()来防止重复。