如何在codeigniter中添加一个类?

时间:2013-04-15 14:39:19

标签: php codeigniter

我正在使用Enom API,此API使用自己的接口(而不是Codeigniters),如下所示:

<?php
require_once( dirname(__FILE__) . '/class.EnomInterface.php' );

Class EnomService extends EnomInterface{

function checkDomain($sld, $tld, $spinner = false, $allowDash = true, $word1 = '', $word2 = '', $word3 = ''){
$this->_setCommand('Check');

$this->addParam('SLD', $sld);
if( strstr($tld, ',') )
{
  $this->addParam('TLDList', $tld);
}
else
{
  $this->addParam('TLD', $tld);
}

if( $spinner && !strstr($tld, ',') )
{
    $this->addParam('DomainSpinner', '1');
    $this->addParam('AllowDash', $allowDash ? '1' : '0');
    if('' != $word1)
        $this->addParam('Word1', $word1);
    if('' != $word2)
        $this->addParam('Word2', $word2);
    if('' != $word3)
        $this->addParam('Word3', $word3);
}

if( !$this->process() || '0' != $this->response['ErrCount'] )
{
  return $this->_returnError();
}

$result = array();

if($spinner)
{
    $i = 1;
    while( isset($this->response['SuggestedName' . $i]) )
    {
        $result[$this->response['SuggestedName' . $i]] = true;
        $i++;
    }
}

if( !isset($this->response['DomainCount']) || '1' == $this->response['DomainCount'] )
{
  $result["$sld.$tld"] = ('210' == $this->response['RRPCode']) ? true : false;
  return $result;
}

for($i=1; $i<=$this->response['DomainCount']; $i++)
{
  $result[ $this->response[('Domain'.$i)] ] = ('210' == $this->response[('RRPCode'.$i)]) ? true : false;
}

return $result;
}
}

这有更多的功能,但我想你们明白了。

无论如何,我试图像这样加载它:

$this->load->library('Enom/class.EnomService');

课程在:

libraries/Enom/class.EnomService.php
libraries/Enom/class.EnomInterface.php

它告诉我它有内部服务器错误。

有人可以帮我解决这个问题吗?

PS:我是Codeigniter的新手.. :)

谢谢!

修改

作为结论,ENOM和其他API在它们之间使用了许多接口和变量,这可能会导致与codeigniter的加载器类冲突。

我设法解决了这个问题,不是通过loader类实现它,而是直接通过require和include变量实现它。

结果是这样的:

require_once('application/libraries/enom/class.EnomService.php');
$enom = new EnomService($registrar_username, $registrar_password, false, true);
$enom->debug = true;

而不是:

$this->load->library('Enom/class.EnomService');

如果有人需要进一步的言论,我会非常乐意提供帮助。

感谢所有帮助过的人,特别是Phill。

1 个答案:

答案 0 :(得分:1)

只需包含类文件,就像EnomService一样,以获取EnomInterface,您应该能够EnomService使用Enom documents

include APPPATH.'libraries/Enom/class.EnomService.php';

$enom = new EnomService('username', '********', false, true);
$enom->debug = true;

$result = $enom->checkDomain('systurn', 'com', true);

var_dump($result);

APPPATH指的是CodeIgniter中的application目录。