Laravel 13 ಈಗ ಹೆಚ್ಚಿನ ಮಾಡೆಲ್ಗಳಲ್ಲಿ ಕಂಡುಬರುವ $table, $fillable ಮತ್ತು $casts ಪ್ರಾಪರ್ಟಿಗಳನ್ನು (properties) ನೇтив PHP ಅಟ್ರಿಬ್ಯೂಟ್ಗಳೊಂದಿಗೆ (native PHP attributes) ಬದಲಾಯಿಸಲು ನಿಮಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಈ ಬದಲಾವಣೆಯು ಮಾಡೆಲ್ ಕಾನ್ಫಿಗರೇಶನ್ನಿಂದ ಹಿಡಿದು ಇವೆಂಟ್ ಲಿಸನರ್ಗಳು (event listeners) ಮತ್ತು ಮೇಲೇಬಲ್ಸ್ವರೆಗೆ (mailables) ಡಜನ್ ದಾಟುವ ಫ್ರೇಮ್ವರ್ಕ್ ಫೀಚರ್ಗಳಿಗೆ ಅನ್ವಯಿಸುತ್ತದೆ ಮತ್ತು ಇದು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕೋಡ್ ಅನ್ನು ಹಾಳು ಮಾಡದೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
Laravel ಏಕೆ ನೇтив ಅಟ್ರಿಬ್ಯೂಟ್ಗಳನ್ನು ಸೇರಿಸಿದೆ
Laravel ದೀರ್ಘಕಾಲದಿಂದ "ಮ್ಯಾಜಿಕ್ ಸ್ಟ್ರಿಂಗ್ಸ್" (magic strings) ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ - ಅಂದರೆ ಮಾಡೆಲ್ ಕ್ಲಾಸ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿರುವ ಕಾಲಮ್ ಹೆಸರುಗಳು ಅಥವಾ ಹೈಡನ್ ಫೀಲ್ಡ್ಗಳ ಅರೇಗಳು (arrays). ಆ ಅರೇಗಳು ಅಡಿಯಲ್ಲಿರುವ ಸ್ಕೀಮಾದ ಬಗ್ಗೆ IDE ಗೆ ಯಾವುದೇ ಸುಳಿವು ನೀಡುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಕಾಲಮ್ ಹೆಸರನ್ನು ರಿಫ್ಯಾಕ್ಟರ್ (refactoring) ಮಾಡುವಾಗ ಅದು ಗಮನಕ್ಕೆ ಬಾರದೆ ತಪ್ಪಿಹೋಗಬಹುದು. ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ನೈಜ, ಟೈಪ್ಡ್ ಕೋಡ್ಗೆ (typed code) ವರ್ಗಾಯಿಸುವ ಮೂಲಕ, Laravel ಡೆವಲಪರ್ಗಳಿಗೆ ಕ್ಲಾಸ್ ಬಾಡಿಯನ್ನು ಬಿಸಿನೆಸ್ ಲಾಜಿಕ್ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಲು ಮತ್ತು ಎಡಿಟರ್ ಮೂಲಕ ಆಟೋಕಂಪ್ಲೀಟ್ (autocomplete), ಟೈಪ್-ಚೆಕಿಂಗ್ ಮತ್ತು ರಿನೇಮ್-ರಿಫ್ಯಾಕ್ಟರ್ (rename-refactor) ಪರಿಕರಗಳನ್ನು ಬಳಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
ಫ್ರೇಮ್ವರ್ಕ್ PHP ನ reflection API ಮೂಲಕ ಅಟ್ರಿಬ್ಯೂಟ್ಗಳನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಕ್ಯಾಶ್ (cache) ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ರನ್ಟೈಮ್ ಓವರ್ಹೆಡ್ (runtime overhead) ಪ್ರಾಯೋಗಿಕವಾಗಿ ಶೂನ್ಯವಾಗಿರುತ್ತದೆ. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ರಾಪರ್ಟಿ-ಆಧಾರಿತ ಮಾಡೆಲ್ಗಳು ಇಂದಿನಂತೆಯೇ ಕೆಲಸ ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತವೆ, ಅಂದರೆ ನೀವು ಹೊಸ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಹಂತ ಹಂತವಾಗಿ ಅಳವಡಿಸಿಕೊಳ್ಳಬಹುದು.
ನೀವು ಪಡೆಯುವ ಪ್ರಯೋಜನಗಳು
- ಟೈಪ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ (Typed configuration) – ಅಟ್ರಿಬ್ಯೂಟ್ಗಳು ಟೈಪ್ಡ್ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತವೆ, ಇದು ಮ್ಯಾಜಿಕ್ ಸ್ಟ್ರಿಂಗ್ಸ್ಗಳನ್ನು ಇಲ್ಲದ ಮಾಡುತ್ತದೆ. ಕಾಲಮ್ ಹೆಸರನ್ನು ಬದಲಾಯಿಸಿದರೆ, ಎಲ್ಲಿ ಅಪ್ಡೇಟ್ ಮಾಡಬೇಕೆಂದು IDE ಸೂಚಿಸುತ್ತದೆ.
- ಸ್ವಚ್ಛವಾದ ಕ್ಲಾಸ್ ಬಾಡಿಗಳು (Cleaner class bodies) – ಎಲ್ಲಾ ಕಾನ್ಫಿಗರೇಶನ್ಗಳು ಕ್ಲಾಸ್ ಹೆಸರಿನ ಮೇಲಿರುತ್ತವೆ; ಬಾಡಿಯಲ್ಲಿ ಕೇವಲ ರಿಲೇಶನ್ಶಿಪ್ಗಳು (relationships), ಸ್ಕೋಪ್ಗಳು (scopes) ಮತ್ತು ಮೆಥಡ್ಗಳು ಮಾತ್ರ ಇರುತ್ತವೆ.
- ಉತ್ತಮ IDE ಅನುಭವ – ಆಟೋಕಂಪ್ಲೀಟ್ ಮತ್ತು ಸ್ಟ್ಯಾಟಿಕ್ ಅನಾಲಿಸಿಸ್ ಅಟ್ರಿಬ್ಯೂಟ್ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳ ಮೇಲೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ, ಇದನ್ನು ಸ್ಟ್ರಿಂಗ್ಗಳ ಅರೇಗಳು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ.
- ಯಾವುದೇ ಬ್ರೇಕಿಂಗ್ ಚೇಂಜ್ಗಳಿಲ್ಲ (No breaking changes) – Laravel ಹಳೆಯ ಪ್ರಾಪರ್ಟಿಗಳು ಮತ್ತು ಹೊಸ ಅಟ್ರಿಬ್ಯೂಟ್ಗಳೆರಡನ್ನೂ ಓದುತ್ತದೆ, ಆದ್ದರಿಂದ ಮಿಶ್ರ ಕೋಡ್ಬೇಸ್ (mixed codebase) ಯಾವುದೇ ಸಮಸ್ಯೆಯಿಲ್ಲದೆ ಚಲಿಸುತ್ತದೆ.
ಹಂತ-ಹಂತದ ಮೈಗ್ರೇಷನ್ ಮಾರ್ಗದರ್ಶಿ
ಮೈಗ್ರೇಟ್ ಮಾಡಬೇಕಾದ ಮಾಡೆಲ್ ಅನ್ನು ಗುರುತಿಸಿ
ಮಾಡೆಲ್ ಫೈಲ್ ಅನ್ನು ತೆರೆಯಿರಿ. ಮೊದಲ ಹನ್ನೆರಡು ಸಾಲುಗಳು$table,$fillable,$hiddenಅಥವಾcasts()ಮೆಥಡ್ನಿಂದ ತುಂಬಿದ್ದರೆ, ಅದು ಮೈಗ್ರೇಷನ್ಗೆ ಸೂಕ್ತವಾಗಿದೆ.ಅಟ್ರಿಬ್ಯೂಟ್ ಕ್ಲಾಸ್ಗಳನ್ನು ಸೇರಿಸಿ
ಫೈಲ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ, ನೀವು ಬದಲಾಯಿಸುವ ಪ್ರಾಪರ್ಟಿಗಳಿಗೆ ಅನುಗುಣವಾದ ಅಟ್ರಿಬ್ಯೂಟ್ ಕ್ಲಾಸ್ಗಳನ್ನು ಇಂಪೋರ್ಟ್ ಮಾಡಿ (ಉದಾಹರಣೆಗೆ,Table,Fillable,Casts). Laravel ಈ ಅಟ್ರಿಬ್ಯೂಟ್ಗಳನ್ನು ಮೊದಲೇ ಒದಗಿಸುತ್ತದೆ.ಪ್ರಾಪರ್ಟಿ ಡಿಕ್ಲರೇಶನ್ಗಳನ್ನು ಅಟ್ರಿಬ್ಯೂಟ್ಗಳಿಂದ ಬದಲಾಯಿಸಿ
// Before protected $table = 'site_deployments'; protected $fillable = ['site_id', 'server_id', 'status']; protected function casts(): array { return ['is_rollback' => 'boolean']; }// After #[Table('site_deployments')] #[Fillable(['site_id', 'server_id', 'status'])] #[Casts(['is_rollback' => 'boolean'])] class Deployment extends Model { // business logic only }ಅಟ್ರಿಬ್ಯೂಟ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಕ್ಲಾಸ್ ಡಿಕ್ಲರೇಶನ್ನ ನೇರವಾಗಿ ಮೇಲಿರುತ್ತದೆ. ಅಟ್ರಿಬ್ಯೂಟ್ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಂಡ ನಂತರ ಮೂಲ ಪ್ರಾಪರ್ಟಿ ಅಥವಾ ಮೆಥಡ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ.
ಟೆಸ್ಟ್ ಸೂಟ್ ಅನ್ನು ರನ್ ಮಾಡಿ
ಮಾಸ್-ಅಸೈನ್ಮೆಂಟ್ (mass-assignment), ಸೀರಿಯಲೈಸೇಶನ್ (serialization) ಮತ್ತು ಯಾವುದೇ ಕಸ್ಟಮ್ ಕ್ಯಾಸ್ಟಿಂಗ್ (custom casting) ಮೊದಲಿನಂತೆಯೇ ಕೆಲಸ ಮಾಡುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. Laravel ನ ಅಟ್ರಿಬ್ಯೂಟ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ ಕ್ಯಾಶ್ ಮಾಡಲ್ಪಟ್ಟಿರುವುದರಿಂದ, ಟೆಸ್ಟ್ ಫೇಲ್ ಆದರೆ ಅದು ಅಟ್ರಿಬ್ಯೂಟ್ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳಲ್ಲಿನ ಟೈಪೋ (typo) ಆಗಿರಬಹುದು.ಸಣ್ಣ ಬ್ಯಾಚ್ಗಳಲ್ಲಿ ಕಮಿಟ್ ಮತ್ತು ಡಿಪ್ಲಾಯ್ ಮಾಡಿ
ಮೈಗ್ರೇಟ್ ಮಾಡಿದ ಮಾಡೆಲ್ ಅನ್ನು ಫೀಚರ್ ಬ್ರಾಂಚ್ಗೆ ಪುಶ್ ಮಾಡಿ, CI ಪೈಪ್ಲೈನ್ ಪಾಸಾದ ನಂತರ ಅದನ್ನು ಮರ್ಜ್ ಮಾಡಿ ಮತ್ತು ಸಬ್ಸೆಟ್ ಸರ್ವರ್ಗಳಿಗೆ ರೋಲ್ ಔಟ್ ಮಾಡಿ. ಹಳೆಯ ಪ್ರಾಪರ್ಟಿ ಸಿಂಟ್ಯಾಕ್ಸ್ ಇನ್ನೂ ಬೆಂಬಲಿತವಾಗಿರುವುದರಿಂದ, ಯಾವುದೇ ತಪ್ಪಾದ ರೆಫರೆನ್ಸ್ ರನ್ಟೈಮ್ ಎರರ್ ಅನ್ನು ಉಂಟುಮಾಡುವುದಿಲ್ಲ.ಪ್ರತಿ ನೇಮ್ಸ್ಪೇಸ್ (namespace) ಗೆ ಪುನರಾವರ್ತಿಸಿ
ಇಡೀ ಕೋಡ್ಬೇಸ್ ಅನ್ನು ಒಟ್ಟಿಗೆ ಬರೆಯುವ ಬದಲು, ಮಾಡೆಲ್ಗಳ ಒಂದು ಲಾಜಿಕಲ್ ಗುಂಪನ್ನು (ಉದಾಹರಣೆಗೆ, ಎಲ್ಲಾ ಬಿಲ್ಲಿಂಗ್ ಸಂಬಂಧಿತ ಎಂಟಿಟಿಗಳನ್ನು) ಅಟ್ರಿಬ್ಯೂಟ್ಗಳಿಗೆ ಬದಲಾಯಿಸಿ, ನಂತರ ಮುಂದಿನ ಗುಂಪಿಗೆ ಇದನ್ನು ಪುನರಾವರ್ತಿಸಿ. ಇದು ಯಾವುದೇ ರಿಗ್ರೆಷನ್ನ (regression) ಪರಿಣಾಮವನ್ನು ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ.
ಪರಿಕರಗಳು ಮತ್ತು ಸೇಫ್ಟಿ ನೆಟ್ಗಳು
- Rector – ಪುನರಾವರ್ತಿತ ಪ್ರಾಪರ್ಟಿ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಅಟ್ರಿಬ್ಯೂಟ್ಗಳಾಗಿ ಪರಿವರ್ತಿಸಬಲ್ಲ ಸ್ವಯಂಚಾಲಿತ ರಿಫ್ಯಾಕ್ಟರಿಂಗ್ ಟೂಲ್. ಇದನ್ನು ಕೋಡ್ಬೇಸ್ನ ಕಾಪಿಯ ಮೇಲೆ ರನ್ ಮಾಡಿ, ವ್ಯತ್ಯಾಸಗಳನ್ನು (diff) ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಸರಿಯಾಗಿ ಕಾಣುವ ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ.
- ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆಗಳು (Automated tests) – Laravel ನ ಬಿಲ್ಟ್-ಇನ್ ಟೆಸ್ಟಿಂಗ್ ಯುಟಿಲಿಟಿಗಳು ಮಾಸ್-ಅಸೈನ್ಮೆಂಟ್ ಮತ್ತು JSON ಔಟ್ಪುಟ್ನಲ್ಲಿನ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತವೆ. ಪ್ರತಿ ಮೈಗ್ರೇಷನ್ ಹಂತದ ನಂತರ ಅವುಗಳನ್ನು ಪಾಸಾಗಿರಿಸಿಕೊಳ್ಳಿ.
- ಫೀಚರ್ ಫ್ಲಾಗ್ಗಳು (Feature flags) – ನೀವು ತಕ್ಷಣವೇ ರೋಲ್ ಬ್ಯಾಕ್ ಮಾಡಬೇಕಿದ್ದರೆ, ಹಳೆಯ ಮತ್ತು ಹೊಸ ಕಾನ್ಫಿಗರೇಶನ್ಗಳ ನಡುವೆ ಬದಲಾಯಿಸುವ ಫ್ಲಾಗ್ನ ಹಿಂದೆ ಹೊಸ ಅಟ್ರಿಬ್ಯೂಟ್ ಬಳಕೆಯನ್ನು ಇರಿಸಿ.
ನೀವು ಮೈಗ್ರೇಷನ್ ಅನ್ನು ಯಾವಾಗ ಬಿಡಬಹುದು
ಒಂದು ಪ್ರಾಜೆಕ್ಟ್ ಚಿಕ್ಕದಾಗಿದ್ದರೆ, ಸ್ಥಿರವಾಗಿದ್ದರೆ ಮತ್ತು ಅಪರೂಪವಾಗಿ ಬದಲಾವಣೆಗಳಾಗುತ್ತಿದ್ದರೆ, ಸ್ವಚ್ಛವಾದ ಮಾಡೆಲ್ಗಳ ಪ್ರಯೋಜನವು ಪರಿವರ್ತನೆಯ ಶ್ರಮಕ್ಕಿಂತ ಹೆಚ್ಚಿರಲಿಕ್ಕಿಲ್ಲ. ಅಟ್ರಿಬ್ಯೂಟ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಐಚ್ಛಿಕವಾಗಿದೆ; ನೀವು ಕ್ಲಾಸಿಕ್ ಪ್ರಾಪರ್ಟಿ ವಿಧಾನವನ್ನು ಅನಿರ್ದಿಷ್ಟಕಾಲ ಬಳಸಬಹುದು. ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ಸಕ್ರಿಯವಾಗಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗುತ್ತಿರುವ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ, ವಿಶೇಷವಾಗಿ ದೊಡ್ಡ ಮಾಡೆಲ್ಗಳು ಅಥವಾ ಪದೇ ಪದೇ ಸ್ಕೀಮಾ ಬದಲಾವಣೆಗಳಿರುವ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ, ಅಟ್ರಿಬ್ಯೂಟ್ಗಳನ್ನು ಮೊದಲೇ ಅಳವಡಿಸಿಕೊಳ್ಳುವುದು ಭವಿಷ್ಯದ ತೊಂದರೆಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
ಮುಂದೆ ಏನನ್ನು ಗಮನಿಸಬೇಕು
Laravel 13 ನ ಅಟ್ರಿಬ್ಯೂಟ್ ಬೆಂಬಲವು ಮಾಡೆಲ್ಗಳ ಹೊರತಾಗಿ ಇವೆಂಟ್ ಲಿಸನರ್ಗಳು, ನೋಟಿಫಿಕೇಶನ್ಗಳು, ಮೇಲೇಬಲ್ಸ್ಗಳು ಮತ್ತು ಬ್ರಾಡ್ಕಾಸ್ಟ್ ಇವೆಂಟ್ಗಳಿಗೂ ವಿಸ್ತರಿಸುತ್ತದೆ. ಸಮುದಾಯವು ಆ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುತ್ತಿದ್ದಂತೆ, ಅಂತಹದೇ ರಿಫ್ಯಾಕ್ಟರಿಂಗ್ ಪ್ಯಾಟರ್ನ್ಗಳು ಹೊರಹೊಮ್ಮುತ್ತವೆ. ಭವಿಷ್ಯದ ಮೈನರ್ ರಿಲೀಸ್ಗಳಲ್ಲಿ ಬರುವ ಯಾವುದೇ ಹೊಸ ಅಟ್ರಿಬ್ಯೂಟ್ ಕ್ಲಾಸ್ಗಳಿಗಾಗಿ ಅಧಿಕೃತ ಅಪ್ಗ್ರೇಡ್ গাইಡ್ ಅನ್ನು ಗಮನಿಸುತ್ತಿರಿ.
ಸಾರಾಂಶ: Laravel 13 ನಿಮಗೆ ಹೆಚ್ಚು ಸರಳವಾದ ಮತ್ತು ಹೆಚ್ಚು IDE-ಸ್ನೇಹಪರ ಮಾಡೆಲ್ಗಳಿಗಾಗಿ ಶೂನ್ಯ ವೆಚ್ಚದ ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತದೆ. ಒಂದೊಂದೇ ನೆಮ್ಸ್ಪೇಸ್ ಅನ್ನು ಪರಿವರ್ತಿಸಿ, Rector ಮತ್ತು ನಿಮ್ಮ ಟೆಸ್ಟ್ ಸೂಟ್ ಅನ್ನು ಅವಲಂಬಿಸಿ, ಆಗ ನೀವು ಕಾನ್ಫಿಗರೇಶನ್ ಡಂಪ್ ಫೈಲ್ಗಳಿಗಿಂತ ಹೆಚ್ಚಾಗಿ ವ್ಯವಹಾರದ ವಿಶೇಷಣಗಳಂತೆ (business specifications) ಓದಬಹುದಾದ ಕ್ಲಾಸ್ಗಳನ್ನು ಪಡೆಯುತ್ತೀರಿ.
