Skip to content

Instantly share code, notes, and snippets.

View batFormat's full-sized avatar
🏠
Working from home

Maxim Kot batFormat

🏠
Working from home
View GitHub Profile

Инверсия управления (англ. Inversion of Control, IoC) — важный принцип объектно-ориентированного программирования, используемый для уменьшения зацепления в компьютерных программах. Также архитектурное решение интеграции, упрощающее расширение возможностей системы, при котором контроль над потоком управления программы остаётся за каркасом - ru.wikipedia.org


Сегодня хотелось бы поговорить о реализации инверсии управления в Laravel. Это один из самых важных аспектов организации слабой связанности компонентов в любимом нами фреймворке, и его понимание играет ключевую роль при создании качественных пакетов и приложений.

Когда мы говорим об IoC в Laravel, то следует знать, что он стоит на трех китах:

  1. Внедрение зависимостей (Dependency Injection)
@wallyqs
wallyqs / Docker Compose + NATS example
Last active February 18, 2024 22:27
NATS Docker blog post/HTTP Server
FROM golang:1.6.2
COPY . /go
RUN go get github.com/nats-io/nats
RUN go build api-server.go
EXPOSE 8080
ENTRYPOINT ["/go/api-server"]
@pbelyaev
pbelyaev / default.blade.php
Last active March 31, 2017 20:51
Laravel 5.3 - Pagination with custom URLs
// resources/views/pagination/default.blade.php
<ul class="pagination">
<!-- Previous Page Link -->
@if ($paginator->onFirstPage())
<li class="page-item disabled"><span class="page-link">&laquo;</span></li>
@else
<li class="page-item"><a class="page-link" href="{{ route($__env->yieldContent('route'), [ 'page' => $paginator->currentPage() - 1 ]) }}" rel="prev">&laquo;</a></li>
@endif
<!-- Pagination Elements -->
@foreach ($elements as $element)
@yannhowe
yannhowe / .gitlab.ci.yml
Created September 26, 2016 18:06
.gitlab.ci.yml for SSH with private key.
# Image neeeds to have ssh-client
image: docker:git
services:
- docker:dind
stages:
- staging
before_script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
@nalgeon
nalgeon / README.md
Last active July 30, 2024 07:04
Пример работы с подсказками DaData в Google Taблицах

Как подключить скрипт к Гугл-таблице:

  1. Открыть таблицу.
  2. В меню выбрать Расширения > Apps Script
  3. Вставить код из файла suggest-google-sheets.js
  4. Вместо ВАШ_API_КЛЮЧ указать API-ключ из личного кабинета (https://dadata.ru/profile/#info)
  5. Сохранить.
  6. В тулбаре выбрать функцию guessParty и нажать на кнопку Выполнить.
  7. Гугл запросит «разрешения на доступ к вашим данным». Нажать «проверить разрешения», выбрать ваш гугл-аккаунт.
  8. Если появится окно «Эксперты Google не проверяли это приложение» — нажать на «Дополнительные настройки», затем «Перейти на страницу... (небезопасно)».
@aksel
aksel / middlewares.js
Last active June 28, 2019 21:45
Route HTTP status code middleware for router5
import { startsWithSegment } from 'router5-helpers';
import { transitionPath } from 'router5';
// Reduces the activated routes, so the last status is used, defaulting to 200
// Reducingg instead of finding, assures that child routes determine the status codes, even when a parent has a different one.
export const statusCodeDecorator = routes => () => (toState, fromState) => {
const status = getActivatedRoutes(routes, toState, fromState).reduce((s, route) => route.status || s, 200);
return Promise.resolve({ ...toState, status });
};
@nxmad
nxmad / LogirovatVremyaRegistraciiVOtdelnyObject.php
Created February 16, 2018 03:10
LogirovatVremyaRegistraciiVOtdelnyObject
<?php
use \Carbon\Carbon;
/*
* Usage eg.:
* protected function create(array $data)
* {
* (new SeparatedObject)->setRegisteredAt(Carbon::now());
*
@behroozam
behroozam / gist:54ffd583f10c453f92354eae5b5e4b6b
Created April 8, 2018 07:52
php deoplyer for deploy docker-compose laravel project in test and production server
<?php
namespace Deployer;
require 'recipe/common.php';
const PRODUCTION_ENV = 'production';
const TEST_ENV = 'test';
// Project name
set('application', 'my_project');
@zthxxx
zthxxx / Activate Office 2019 for macOS VoL.md
Last active November 18, 2024 16:03
crack activate Office on mac with license file
@timacdonald
timacdonald / ContactIndexResponse.php
Last active February 9, 2023 21:48
Easily respond to content types and url extensions
<?php
namespace App\Http\Responses;
use App\Models\ContactType;
use App\Factories\CsvFactory;
class ContactIndexResponse extends Response
{
public function __construct($contacts)