Kohana проблема при использовании подчеркивания в имени таблицы

mstdmstd

Новичок
Всем привет,
У меня возникла проблема при использовании модели если в имени таблицы есть подчеркивание

Файл /application/classes/Model/Tour_highlight.php :

PHP:
class Model_Tour_highlight extends ORM //Model
{
	protected $_table_name = 'tour_highlight';

	public function getData()
	{
		$Tour_HighlightFactory = ORM::factory('tour_highlight');
И вызов в контроле:

PHP:
$Model_TourHighlight = new Model_Tour_highlight();  // Получаю ошибку  Class 'Model_Tour_highlight' not found
Я попробовал переименовать имя файла модели в /application/classes/Model/Tourhighlight.php
с кодом :
PHP:
class Model_Tourhighlight extends ORM //Model
{
	protected $_table_name = 'tour_highlight';




	public function getData()
	{
		$Tour_HighlightFactory = ORM::factory('tour_highlight');
И код в контроле :

PHP:
	$Model_TourHighlight = new Model_Tourhighlight();
Получил ту же ошибку но уже в другом месте :
PHP:
ErrorException [ Fatal Error ]: Class 'Model_tour_highlight' not found

MODPATH/orm/classes/Kohana/ORM.php [ 46 ]

41 	public static function factory($model, $id = NULL)
42 	{
43 		// Set class name
44 		$model = 'Model_'.$model;
45 
46 		return new $model($id);
47 	}
48 
49 	/**
50 	 * "Has one" relationships
51 	 * @[USER=4683]var[/USER] array
я перепробовал разные варианты - все равно ошибка...А как правильно ?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Правильно — после каждого подчеркивания с большой буквы начинать. И в имени файла, и в имени класса, и в вызове фабрики.
На винде будет работать и так, и так — на линуксе — не будет.
 

mstdmstd

Новичок
И подскажите, пожалуйста, а как лучше сделать если таблица состоит из 2 частей например cms_item.
И хочется чтобы имя модели отображало эту разбивку на 2 части...
Технически с подкатологом да работает - но выглядит это не очень хорошо...
Переименовать модель в cmsitem а таблицу оставить cms_item или есть еще какие-либо варианты?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
In framework it's all about rules.

Фреймворки нужны для того, что бы снижать стоимость поддержки, в основном именно документированием ожидаемого поведения. Если тебе не нравится именование классов в стиле PSR — не пользуйся фреймворками, но ломать поведение, которое для других будет ожидаемым не надо.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Вот эти стандарты имеются в виду :
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
?
А Kohana 3.3 придерживается этих стандартов?

То есть с точки зрения этих стандартов надо переименовать модель в cmsitem а таблицу оставить cms_item ?
Не только кохана. Большинство современных фреймворков придерживается их.
Ты можешь аргументировано объяснить нежелание ложить модель во вложенную папку?
 

mstdmstd

Новичок
1) Непривычно
2) Если в некоторых случаях когда есть главная таблица скажем item и есть несколько связанных таблиц item_subject1, item_subject2 то тогда в подкаталоге модели item будут модели subject1, subject2... Так ? Опять таки непривычно - хотя в этом есть логика.
3) Таблица выше называется cms_item - но она не является связанной к таблице cms, у нее такое имя из двух слов. Тогда модель и таблицу нудно переименовать в cmsitem без подчеркивания?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
3) Таблица выше называется cms_item - но она не является связанной к таблице cms, у нее такое имя из двух слов. Тогда модель и таблицу нудно переименовать в cmsitem без подчеркивания?
И в этом тоже есть логика?) Если она не связанна к cms - назови ее просто item
 
Сверху