@Trionik

Как определить что класс подключился?

Вылезает вот такая ошибка
Class 'Bitrix\Sender\MailingTable' not found (0)

Поместил класс mailing в папку /local/php_interface/lib
отрывок класса mailing
<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage sender
 * @copyright 2001-2012 Bitrix
 */
namespace Bitrix\Sender;

use Bitrix\Main\DB\SqlExpression;
use Bitrix\Main\Entity;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Type as MainType;

use Bitrix\Sender\Internals\Model;

Loc::loadMessages(__FILE__);

class MailingTable extends Entity\DataManager
{
	/**
	 * @return string
	 */
	public static function getTableName()
	{
		return 'b_sender_mailing';
	}

Поместил класс в автозагрузчик
<?	
Bitrix\Main\Loader::registerAutoLoadClasses(null, [
    'Bitrix\Sender\Subscription' => '/local/php_interface/lib/subscription.php'
]);

Bitrix\Main\Loader::registerAutoLoadClasses(null, [
    'Bitrix\Sender\mailing' => '/local/php_interface/lib/mailing.php'
]);
?>

подключил автозагрузчик в файле init.php
require_once( $_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/autoload.php');


Вот этот код всё равно выдаёт ошибку
<?
namespace Newssend;

use  Bitrix\Sender\mailing;
	
class class_news extends \CBitrixComponent
	{	
	function OnAfterIBlockElementAddHandler(&$arFields)
		{
		$arrSITE="s1";	
	
		$data = array( 
				'order' => array ("ID"=>"ASC"),
				'filter' => array("RUBRIC"=>$aPostRub, 
				"CONFIRMED"=>"Y", 
				"ACTIVE"=>"Y",
				"FORMAT"=>$post_arr["SUBSCR_FORMAT"], 
				"EMAIL"=>$post_arr["EMAIL_FILTER"], 
				"RUBRIC"=>array("CONFIRMED"=>"Y", 
				"ACTIVE"=>"Y",
				"ID"=>"1"))
				);				
				$subscr = \Bitrix\Sender\Subscription::getList($data);
		}
	} 
?>

Ошибка
Class 'Bitrix\Sender\MailingTable' not found (0)

1. Как узнать что у меня этот класс подключился?
2. Мне нужно писать что то в своём классе чтобы этот класс подключить или
use Bitrix\Sender\mailing;

это и есть подключение класса?
  • Вопрос задан
  • 706 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Aricus
'Bitrix\Sender\mailing'

class MailingTable

Вы подключаете mailing, а ожидаете, что подключится MailingTable.
1. Если не всплывает ошибка при использовании класса, значит, подключился.
2. Тут не уверен: вероятно, это автоматически прописывается в CMS. Но проверьте. Только
use Bitrix\Sender\MailingTable;
Ответ написан
Комментировать
@Firsov36
full-stack web developer

Поместил класс mailing в папку /local/php_interface/lib
отрывок класса mailing


Пишете, что подключили класс mailing, а в коде класса такого нет, но есть MailingTable

class MailingTable extends Entity\DataManager

К слову сказать, есть такой же класс от Битрикса. Вы пытаетесь переписать стандартный класс Битрикса? Классы начинаются с Большой буквы.

Если уж пишите свой класс, то используйте свое пространство имен, зачем городить огород в чужом поле?

Ну и отвечая на вопрос: "Как определить что класс подключился?"
В php есть метод для проверки существования класса
if (class_exists('MyClass')) {
    $myclass = new MyClass();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы