Traits практики

dakata__92

Super Moderator
Добра практика ли са? В много от класовете които съм разглеждал се изполва нещо от сорта на :

PHP:
namespace Zend\Captcha;

use Traversable;
use ZendService\ReCaptcha\ReCaptcha as ReCaptchaService;

/**
 * ReCaptcha adapter
 *
 * Allows to insert captchas driven by ReCaptcha service
 *
 * @see http://recaptcha.net/apidocs/captcha/
 */
class ReCaptcha extends AbstractAdapter

но
use Traversable;
use ZendService\ReCaptcha\ReCaptcha as ReCaptchaService;
мисля че не са Traits. Както и да е въпроса ми е те добра практика ли са?
Как бихте ги заменили и с какво? Трейтовете винаги се ползват вътре в класа а не над дефинирането му и под неймспейса:
PHP:
class Test{
use Trait;
}
Бихте ли ги ползвали или не?
 
Това не са trait-ове.
Тези use-та ти позволяват да пишеш Class вместо \very\long\name\space\Class.

PHP:
new very\long\name\space\Class();
// или:
use very\long\name\space\Class;
new Class();
 
anonimen каза:
Това не са trait-ове.
Тези use-та ти позволяват да пишеш Class вместо \very\long\name\space\Class.

PHP:
new very\long\name\space\Class();
// или:
use very\long\name\space\Class;
new Class();

Ахаааа това обеснява всиииичко!
 
anonimen каза:
Това не са trait-ове.
Тези use-та ти позволяват да пишеш Class вместо \very\long\name\space\Class.

PHP:
new very\long\name\space\Class();
// или:
use very\long\name\space\Class;
new Class();

Може ли да ми помогнеш малко. В ядрото си изпадам в следната ситуация

PHP:
namespace System\Core;
$path = dirname(dirname(__DIR__)).DIRECTORY_SEPARATOR."index.php";
file_exists($path) ? require_once $path : die("The installed [$path] is not found!");

require_once "ErrorHandler.php";
require_once "Loader.php";

use \System\Core\ErrorHandler;
use \System\Core\Loader;
use \System\Core\Configuration;
use \System\Core\Controller;

class AppKernel
{
	private static $_instance = null;
	private $_config,$_dbConnection,$_view = null;
	
	private function __construct()
	{
		ErrorHandler::getInstance();
		$namespaces = array(
			"System" => FRAMEWORK_SYSTEM_FOLDER,
			"user" => PUBLIC_FOLDER
		);
		Loader::registerNamespaces($namespaces);
		Loader::registerAutoLoad();
		$this->_config = Configuration::getInstance()->setConfigFolder(FRAMEWORK_CONFIG_FOLDER);
	}
}

Това тук правилно ли е? Така зареждам лоадъра и ерор хендлъра като ги инклудам ръчно и от там нататъка не инклудвам никъде другаде освен самият кернел още веднъж в стартиращият файл. Как да опростя кода който ще последва по-надолу. Добре ли е направен? Искаше ми се да е над неймспейса но не е възможно трещи веднага грешката за код над неймспейса. Както и да е просто ми стана интересно да попитам. :) :?:
PHP:
namespace System\Core;
$path = dirname(dirname(__DIR__)).DIRECTORY_SEPARATOR."index.php";
file_exists($path) ? require_once $path : die("The installed [$path] is not found!");

require_once "ErrorHandler.php";
require_once "Loader.php";

use \System\Core\ErrorHandler;
use \System\Core\Loader;
use \System\Core\Configuration;
use \System\Core\Controller;

class AppKernel
 
Как да опростя кода който ще последва по-надолу. Добре ли е направен? Искаше ми се да е над неймспейса но не е възможно трещи веднага грешката за код над неймспейса.
Мммм-кво? Какво искаш да опростиш?
Не съм още много запознат с тез работи, единствено мога да предположа някакъв SimpleStarter клас в който да wrap-неш и да разпределиш кода по-горе, не знам :idea:
 
Да имаш процедурен код преди class е много лошо. Направи си bootstrap файл, в който слагаш това.
 
djman каза:
Да имаш процедурен код преди class е много лошо. Направи си bootstrap файл, в който слагаш това.
В index.php са ми константите и всичко останало като трябва да проверявам дали съществува. Така или иначе ще трябва да ги инклудна просто предлагаш да е един път в класа нали.
 

Back
Горе