mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-01 03:26:36 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			30 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| Design Decisions
 | |
| ================
 | |
| 
 | |
| This document lists the design decisions that we have made after extensive discussions. Unless there are very strong
 | |
| reasons, these decisions should be kept for consistency. Any change to these decisions should get agreement among
 | |
| the core developers.
 | |
| 
 | |
| 1. **[When to support path aliases](https://github.com/yiisoft/yii2/pull/3079#issuecomment-40312268)**
 | |
|    we should support path alias for properties that are configurable because using path aliases in configurations 
 | |
|    are very convenient. In other cases, we should restrict the support for path aliases.
 | |
| 2. **When to translate messages**
 | |
|    messages should be translated when these are displayed to non-tech end user and make sense to him. HTTP status messages,
 | |
|    exceptions about the code etc. should not be translated. Console messages are always in English because of encoding
 | |
|    and codepage handling difficulties.
 | |
| 3. **[Adding new auth client support](https://github.com/yiisoft/yii2/issues/1652)**
 | |
|    For better maintainability, we will not add any additional auth clients to the core extension. They should be done 
 | |
|    in terms of user extensions. 
 | |
| 4. **When using closures** it is recommended to **include all passed parameters** in the signature even if not all of them are
 | |
|    used. This way modifying or copying code is easier because all information is directly visible and it is not necessary to
 | |
|    look up which params are actually available in the documentation. ([#6584](https://github.com/yiisoft/yii2/pull/6584), [#6875](https://github.com/yiisoft/yii2/issues/6875))
 | |
| 5. Prefer **int over unsigned int** in database schema. Using int has the benefit that it can be represented in PHP as an integer.
 | |
|    If unsigned, for 32 bit system, we would have to use string to represent it.
 | |
|    Also although unsigned int doubles the size, if you have a table that needs such big number space,
 | |
|    then it's safer to use bigint or mediumint rather than relying on unsigned.
 | |
|    <https://github.com/yiisoft/yii/pull/1923#issuecomment-11881967>
 | |
| 6. [Helpers vs separate non-static classes](https://github.com/yiisoft/yii2/pull/12661#issuecomment-251599463)
 | |
| 7. **Setters method chaining** should be avoided if there are methods in the classs returning meaningful values. Chaining could be
 | |
|    supported if a class is a builder where all setters are modifying internal state: https://github.com/yiisoft/yii2/issues/13026
 | |
| 8. **Global exception/error handler** is used instead of local try-catch because it is reliable in terms of catching destructors and everything that happens outside the scope of the `run()` method such as bootstrap. See [#14348](https://github.com/yiisoft/yii2/issues/14348).
 | 
