Package and bundle structure and namespaces¶
If you wish to contribute to Ibexa DXP development, you need to adhere to the package and bundle structure and namespace standards.
The following conventions apply to contributions to Ibexa core code, not to third party packages.
Note
New code needs to follow the rules outlined here. They are being applied progressively to existing code.
Root PHP namespace¶
Define Ibexa DXP core PHP code in a namespace with the following prefix:
1 |
|
A package which groups some DXP features can use an additional prefix, for example:
1 |
|
1 |
|
Packages¶
The general package directory structure and corresponding PHP namespace mapping are:
1 2 3 4 5 6 7 8 9 |
|
If a package does not contain some of the described parts, you can skip those directories.
Implementation (lib)¶
The src/lib
directory and its corresponding Ibexa\<PackageName>
namespace are meant for internal implementation not tied to the Symfony Framework.
Examples:
1 |
|
1 |
|
Bundles¶
The bundle class definition in the src/bundle
directory must be:
1 2 3 |
|
Examples:
1 2 3 |
|
1 2 3 |
|
Contracts¶
A package may introduce a namespace for contracts, to be consumed by first and third party packages and projects, which must be prefixed as:
1 |
|
Examples:
1 |
|
1 |
|
1 |
|
That namespace needs to be mapped to the src/contracts
directory of a package.
Note
Backward compatibility for interfaces and objects defined in the Contracts
namespace is guaranteed.