Q1. Вы можете использовать:
$this->load->library('snoopy');
В ваших контроллерах. И создайте новый экземпляр, например, так:
$snooper = new Snoopy();
Причина, по которой они используют:
if (!class_exists('Snoopy')) {
require_once(APPPATH.'libraries/Snoopy'.EXT);
}
Это потому, что вы получите фатальную ошибку, если попытаетесь использовать $ this-> load-> library (), так как класс загрузчика недоступен в библиотеке. Вы можете вызывать его в контроллере, потому что ваши контроллеры расширяют класс контроллера, который расширяет класс ci_base, который расширяет класс ci_loader, из которого поступает функциональность для выполнения вызовов, подобных $ this-> load. Класс Scraping, который вы здесь показали, не имеет. Если вы покопаетесь, то увидите, что загрузчик в основном использует include_once для включения любого класса, помощника и т. Д., Которые вы пытаетесь использовать.
Q2.
$to_specialchars = true
используется в паре объявлений функций в качестве параметров. Установка его = = true просто установка по умолчанию, так что вы можете сделать это:
echo $scrappy->getWebHtml('http://example.com');
Что идентично этому:
echo $scrappy->getWebHtml('http://example.com', true);
Если вы посмотрите на оператор return этой функции, то увидите, что проверяется, что $ to_specialchars проверяется, и если оно истинно, то вывод сначала выполняется через PHP-функцию htmlspecialchars ().
Q3. Если вы посмотрите на корень вашего проекта codeigniter, в 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.'/');
}
Таким образом, эти две константы устанавливаются при начальной загрузке, поэтому вы можете использовать их в своем приложении, и если вы когда-нибудь захотите их изменить, то не будет случаев, когда вы увидите, что они используются в предоставленном вами коде.
В следующий раз, пожалуйста, задавайте один вопрос на вопрос stackoverflow:)