denx-b / bitrix-blank
bitrix blank 模板
dev-master
2024-09-28 13:07 UTC
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- composer/installers: ~1
This package is auto-updated.
Last update: 2024-09-28 13:07:43 UTC
README
此模板是1С-Битри克斯项目文件结构化的好例子。
我们团队在实施按照PSR-4自动加载自定义类以及使用该仓库中描述的结构和原则之后,工作效率显著提高。
在仓库中可以找到的团队关键约定
- 类自动加载
- 事件处理器实现从init.php中分离出来
- 网站模板示例
- API
除此之外,所有开发者都根据PSR-12规范对代码进行风格化,并在必要时使用该规范进行PhpStorm的自动格式化。
模板
包含一个网站模板,带有标准header和footer.php示例,其中使用了常用的方法:处理语言文件、连接样式、脚本等。
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die(); } /** @global $APPLICATION */ use Bitrix\Main\Localization\Loc; use Bitrix\Main\Page\Asset; Loc::loadMessages(__FILE__); Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/js/script.js'); Asset::getInstance()->addString('<link rel="icon" type="image/x-icon" href="' . SITE_TEMPLATE_PATH . '/favicon.ico"/>'); Asset::getInstance()->addString('<meta name="viewport" content="width=device-width, initial-scale=1">'); ?><!doctype html> <html xml:lang="<?php echo LANGUAGE_ID ?>" lang="<?php echo LANGUAGE_ID ?>"> <head> <title><?php echo $APPLICATION->ShowTitle() ?></title> <?php $APPLICATION->ShowHead(); ?> </head> <body> <div id="panel"><?php $APPLICATION->ShowPanel() ?></div>
API
使用内置的类自动加载和实现的API机制,可以轻松添加自己的方法。
class ApiFactory implements ApiFactoryInterface { public static function create(string $method = ''): Api { try { switch ($method) { case 'news': $api = new Methods\News(); break; case 'newsDetail': $api = new Methods\NewsDetail(); break; default: $api = new Methods\Unknown(); } $api->init();
上述示例将可用在以下地址
/api/news
/api/newsDetail
每个方法对应于 /local/php_interface/include/classes/Api/Methods 目录中的类
classes
├── Agents
├── Api
│ │
│ ├── Methods
│ │ ├── News.php <-- /api/news
│ │ ├── NewsDetail.php <-- /api/newsDetail
│ │ └── Unknown.php <-- /api/всё_что_угодно
│ │
│ ├── Api.php
│ ├── ApiFactory.php
│ └── ApiFactoryInterface.php
│ │
├── Events
├── Model
│ └── Helper.php
│
└── eventHandlers
├── common.php
└── sale.php
├── autoload.php
├── bootstrap.php
├── composer.json
└── settings.php