从笨类创建对象(Creating an object from a class in Codeign

2019-08-17 05:56发布

下面的代码是从http://d.hatena.ne.jp/dix3/20081002/1222899116和规范运作良好。

这是使用的示例探听在笨。

Q1。 我是正确地说,我不能使用,

$this -> load -> library('snoopy')

因为Snoopy.php不创建一个对象。 而下面的例子是为了做到这一点? 如果是这样,你能解释一下/指示我该怎么做了详细的教程或解释?

if ( ! class_exists('Snoopy'))
    {
        require_once(APPPATH.'libraries/Snoopy'.EXT);
    }

Q2。 为什么笔者使用

$to_specialchars=true

需要它的呢?

Q3。 你能解释APPPATH和EXT。

APPPATH.'libraries/Snoopy'.EXT

我检查它在php.net但我找不到它。 EXT必须延期,但我可以在任何地方使用?

提前致谢。

我在应用程序/库/ Snoopy.php史努比

我有应用程序/库/ Snoopy.php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Scraping{
    var $c; 
    function Scraping(){
        if ( ! class_exists('Snoopy'))
        {
            require_once(APPPATH.'libraries/Snoopy'.EXT);
        }
        $this -> c = new Snoopy();
    }

    function getWebHtml($url="",$to_specialchars=true){
        $this ->c -> fetch( $url );
        $str = mb_convert_encoding( (string) $this -> c -> results,"UTF-8","auto");
        return ($to_specialchars) ? htmlspecialchars($str , ENT_QUOTES , "UTF-8" ) : $str ;
    }

   function getWebText($url="",$to_specialchars=true){
        $this -> c -> fetchtext( $url );
        $str = mb_convert_encoding( (string) $this -> c -> results,"UTF-8","auto");
        return ($to_specialchars) ? htmlspecialchars($str , ENT_QUOTES , "UTF-8" ) : $str ;
    }

    function getWebLinks($url=""){
        $this -> c -> fetchlinks( $url );
        return (array) $this-> c -> results ;
    }

    function getWebLinksText($url="",$delimiter="<br>"){
        $arr = $this-> getWebLinks($url) ;
        $ret ="";
        foreach($arr as $k => $v){
            $ret .= $v . $delimiter ;
        }
        return $ret;
    }

} //endofclass

/* End of file Scraping.php */
/* Location: ./application/libraries/Scraping.php */
 ?>

我有一个控制器应用程序/控制器/ mytasklist.php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Mytasklist extends Controller {

function Mytasklist()
{
  parent :: Controller(); 

  $this -> load -> helper( 'url' ); 

} 

    function index()
    {
      $data = "";

      $this -> _SetTpl( $data );
    } 
 function _SetTpl( $data )
{ 


  $this -> load -> library("scraping");
  $data["scraping"]["text"] = $this-> scraping -> getWebText("http://www.example.com/");
  $data["scraping"]["html"] = $this-> scraping -> getWebHtml("http://www.example.com/");
  $data["scraping"]["link"] = $this-> scraping -> getWebLinksText("http://www.example.com/","\n");

  $tpl["page_title"] = "Welcome";

  $tpl["main_content"] = $this -> load -> view( 'tasklist_view', $data , true ); 

  $this -> load -> view( 'base_view', $tpl );
} 


}

我有一个观点,应用/视图/ base_view.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <meta name="keywords" content="keyword here" />
    <meta name="description" content="description here" />
    <title><?php if(isset($page_title)){echo $page_title ;}?></title>
    <?php if(isset($xajax_js)){echo $xajax_js ;}?>
    <link href="http://127.0.0.1/ci_day4/css/mystyle.css" rel="stylesheet" type="text/css"/>
</head>
<body>

<div id="container">


    <div id="rightblock">

        <div id="content">

            <?=$main_content?>

        </div>

    </div>

</div>

</body>
</html>

Answer 1:

Q1。 您可以使用:

$this->load->library('snoopy');

在你的控制器。 创造像这样一个新的实例:

$snooper = new Snoopy();

他们使用的原因:

if (!class_exists('Snoopy')) {
    require_once(APPPATH.'libraries/Snoopy'.EXT);
}

是因为如果你尝试,你会得到一个致命的错误,并使用$这个 - >负载>库(),因为装载机类不是在图书馆可用。 你可以把它的控制器是因为你的控制器扩展控制器类,它扩展了ci_base类,它扩展了ci_loader类,这是其中的功能,让喜欢这 - $电话>负载从何而来。 你在这里显示的刮痧类没有。 如果你往下挖,你会看到,装载机基本上使用include_once包括任何类,助手等你正在尝试使用。

Q2。

$to_specialchars = true

在一对夫妇的函数声明作为参数被使用。 设置它“=真”只是设置一个默认的,所以你可以这样做:

echo $scrappy->getWebHtml('http://example.com');

这等同于这样的:

echo $scrappy->getWebHtml('http://example.com', true);

如果你看一下这个函数的返回语句,你会看到他们是$正在检查to_specialchars,如果这是真的,那么输出通过PHP函数用htmlspecialchars()首先运行。

Q3。 如果你看一下你的笨项目的根,在index.php中你会看到定义为EXT:

define('EXT', '.'.pathinfo(__FILE__, PATHINFO_EXTENSION));

和APPATH:

if (is_dir($application_folder))
{
define('APPPATH', $application_folder.'/');
}
else
{
    if ($application_folder == '')
    {
        $application_folder = 'application';
    }
    define('APPPATH', BASEPATH.$application_folder.'/');
}

因此,这些都是被设定在引导两个常量,所以你可以在你的应用程序中使用它们,如果你是永远改变他们,那就不是像在那里你看到它在你提供的代码中使用了实例。

请在下一个时间内,每个计算器问题一个问题:)



Answer 2:

。 此示例代码刮痧基于使用库写着:“史努比 - PHP的网客户端(snoopy.sourceforge.net)”


我试图再次发布它。 但我不能用超链接张贴。 抱歉..我会回答,在我的网站。(我是一个新手stackoverflow.com :-()

我想,我会尽力几天后重新发布这些答案。

( http://d.hatena.ne.jp/dix3/20091004 )



文章来源: Creating an object from a class in Codeigniter