Development Purpose is the creation of a new software core at a new technology level while eliminating “layers” of outdated technology.
The compatibility principle to which Bitrix, Inc. must adhere to made it necessary to perform a large scope of work not directly intended to develop Bitrix Framework. It immediately affected the speed and quality of development of the platform itself and implicitly affected the distribution of the company’s products in the market.
Actually, the new core is a new development method. At the same time, all old API continues working in the product. And a new API is added for development in a new style. Gradually the old API must become something like an adaptor that ensures compatibility. And all logic with relevant refactoring must move to a new core.
The minimal technical requirements for the product version 18.5.400 (with core D7):
- PHP version 7.1.
- MySQL version 5.6.
Main Differences from the Old Core
- The following databases are supported: MySQL and NoSQL.
- Abandoning the inefficient driver MSSQL ODBC, only native driver is supported.
- ORM (query builder) with noSQL is used.
- Object-Oriented Programming (OOP)
- Strong engagement. All code belonging to a certain area must be concentrated in a single place, in the same class, and in the same class set.
- Components with OOP (class.php) have the possibility to write a more structured component code and a possibility of inheritance.
- Consistent code. All equal queries have the same name, the same sets of parameters, and return unified data. I.e. GetList of users does not differ from GetList of groups of users.
- Support of name spaces.
- New uniform rules of code formatting with strict control at the level of development.
- Abandoning of global variables.
- Support of exceptions.
- Support of new types: date, time, and files. Classes with methods replace unformatted data. The values of these types are objects with formatting methods, etc.
- Class library.
- Unified events. A possibility of modification and integration using handlers.
- Autoload. All system entities are located in previously determined places; accordingly, an autoload is supported without additional actions on the part of the developer.
- Specialized handlers (classes, entities) for different situations – types of applications (http, cli).
- Deferred load of language files. Files from /lang files are not connected simultaneously with a component connection; they are loaded after the first query of a language phrase.
- Object providers for main operations (cache, log).o Object providers for main operations (cache, log).