【问题标题】:Cannot instantiate php object无法实例化 php 对象
【发布时间】:2016-01-18 23:19:19
【问题描述】:

我有一个 PHP 接口和一个实现它的类。 当我尝试使对象实例化时,(网页)页面变为完全白色,即使显示错误为“打开”并且如果错误报告设置为 E_ALL,它也不会显示任何错误,则不会报告任何内容,也不会出现 php 错误日志或 apache 错误日志。

这是代码。

<?php
    namespace it\MyCompany\OtherCompany\System;

    interface IInsertUserQueryStrategy{
        /**
         * 
         * @param User $u
         * @param array $defaultParameters 
         * @param string $ua
         */
        public function insert(User $u, $defaultParameters = array(), $ua = null);
    }

实现它的类

<?php
namespace it\MyCompany\OtherCompany\ICF\System;

use it\MyCompany\OtherCompany\System\IInsertUserQueryStrategy;

class ICFInsertUserQueryStrategy implements IInsertUserQueryStrategy{

    public function insert(ICFUser $u, $defaultParameters = array(), $ua = null){

        $u->setActivationKey();

        $parameters = array_merge($defaultParameters,
                                  array (ICFUserPeer::VERIFICATION_KEY => $u->getActivationKey(),
                                         ICFUserPeer::NOME              => $u->getNome(),
                                         ICFUserPeer::COGNOME           => $u->getCognome(),
                                         ICFUserPeer::EMAIL             => $u->getEmail(),
                                         ICFUserPeer::CELLULARE         => $u->getCellulare(),
                                         ICFUserPeer::PASSWORD          => $u->getPassword(),
                                         ICFUserPeer::PRIVACY           => (int)$u->getPrivacyMarketing(),
                                         ICFUserPeer::PDV               => $u->getPuntoVendita(),
                                         ICFUserPeer::FIDELITY          => $u->getFidelity(),
                                         ICFUserPeer::TIPOCARD          => $u->getTipoCard(),
                                         ICFUserPeer::TIPO_AZIONE       => UserPeer::WS_CONSUMERHANDLER_INSERT));


        if (! is_null ( $ua )) {
            $parameters = array_merge ( $parameters, $ua );
        }

        return $parameters;
    }

}

我使用composer和autoload系统,这两个类同目录下的其他类/文件加载没有问题。

$is = new ICFInsertUserQueryStrategy(); //This generate some error wtih blank page

【问题讨论】:

  • 有什么错误?
  • 这正是问题所在!我不知道,它只是停止页面,只是一个没有错误报告的白页。试图在 $is = new ICFInsertUserQueryStrategy() 之后打印一个 var_dump 它什么也没显示。
  • 在尝试设置之前尝试设置error_reporting(E_ALL);
  • error_reporting(-1);
  • 你在哪里调用这个类?在同一个文件或任何其他文件中。如果在任何其他文件中,则使用 new \it\MyCompany\OtherCompany\ICF\System\ICFInsertUserQueryStrategy()

标签: php class oop interface


【解决方案1】:

由于插入方法的定义应该相同,所以不能使用ICFUser

【讨论】:

  • 你可以extends User.
  • ICFUser 扩展用户?
  • 你能给我一个例子,因为我试过它不工作吗?
  • 据我所知并根据文档:实现接口的类必须使用与接口中定义的完全相同的方法签名。不这样做会导致致命错误。
  • 是的,你完全正确。我把它和abstract 类混淆了。好点。
猜你喜欢
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-13
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多