{"id":36294156,"url":"https://github.com/karmaphp/karma","last_synced_at":"2026-01-11T10:01:36.412Z","repository":{"id":57004573,"uuid":"98389373","full_name":"karmaphp/karma","owner":"karmaphp","description":"Karma Framework, Slim Framework üzerine inşa edilmiş PHP Application Framework'tür.","archived":false,"fork":false,"pushed_at":"2023-10-16T03:20:59.000Z","size":118,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-10T02:42:47.126Z","etag":null,"topics":["framework","karma","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/karmaphp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-07-26T06:47:19.000Z","updated_at":"2022-05-26T06:36:55.000Z","dependencies_parsed_at":"2022-08-21T13:50:55.225Z","dependency_job_id":null,"html_url":"https://github.com/karmaphp/karma","commit_stats":{"total_commits":43,"total_committers":1,"mean_commits":43.0,"dds":0.0,"last_synced_commit":"cc7a16f9dd53d17708f60777159b1cfa78bf2ff1"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/karmaphp/karma","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmaphp%2Fkarma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmaphp%2Fkarma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmaphp%2Fkarma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmaphp%2Fkarma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karmaphp","download_url":"https://codeload.github.com/karmaphp/karma/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmaphp%2Fkarma/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28299709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T08:21:30.231Z","status":"ssl_error","status_checked_at":"2026-01-11T08:21:26.882Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","karma","php"],"created_at":"2026-01-11T10:01:35.017Z","updated_at":"2026-01-11T10:01:36.384Z","avatar_url":"https://github.com/karmaphp.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"**DEPRECATED** \n\nLütfen dikkat, bu proje henüz Slim Framework son haline gelmeden önce şuanki mevcut bazı özellikleri de içeren ve yazılım geliştirmeyi kolaylaştıran bazı pratikleri içeriyordu. \nSlim Framework tarafındaki bazı gelişmeler, örneğin kendi Container'ından vazgeçip PHP-DI gibi diğer container'ları bir interface üzerinden kullanma gibi geliştirmeleri ve pratikleri\nson versiyonunda içine aldığı için bu projeye artık gerek kalmamıştır. Slim Framework ile başlanan bir projeyi [slim-bridge](https://github.com/PHP-DI/Slim-Bridge)'i dahil ederek \nkullanmaya devam edebilirsiniz.\n\n# Karma Framework\n\n[![Build Status](https://travis-ci.org/karmaphp/karma.svg?branch=master)](https://travis-ci.org/karmaphp/karma)\n[![Coverage Status](https://coveralls.io/repos/github/karmaphp/karma/badge.svg?branch=master)](https://coveralls.io/github/karmaphp/karma?branch=master)\n[![Total Downloads](https://poser.pugx.org/karmaphp/karma/downloads)](https://packagist.org/packages/karmaphp/karma)\n\nMikro frameworklerden Slim Framework üzerine inşa edilmiş bir PHP Application Framework'tür. Slim Framework ile tamamen uyumludur. Bu sayfada anlatılanlara ek olarak onun dökümantasyonunu da kullanabilirsiniz.\n\n## Misyon\n\nPHP ile uygulama geliştirmeye alternatif bir çözüm önerisi sunmak. PHP'nin kaygan zemininden kaçarak Framework'lere sığınanlar için alternatif olmak.\n\n## Vizyon\n\nOrtaya koyulan standartlar ve önerileri herkesin benimseyerek kullanması ve önerilerle genelin ihtiyacını karşılayan bir yapı sunmak.\n\n## Composer ile Yükle\n\n```json\n{\n  \"require\": {\n    \"karmaphp/karma\": \"^2.2\"\n  }\n}\n```\n\n## Booting (index.php)\n\n```php\n\u003c?php\n\nrequire_once 'vendor/autoload.php';\n\n$app = \\Karma\\AppFactory::create();\n\n$app-\u003erun();\n```\n\n## Container'ın Aktif Edilmesi\n\nKarma Framework `php-di/php-di` paketi ile birlikte gelmektedir ve varsayılan container olarak **php-di** kullanmaktadır.\n\nContainer build ederken ilk parametre olarak Container sınıfı, ikinci olarak da servisler **array** olarak verilmelidir. Üçüncü parametre olarak $useAnnotations değişkeni varsayılan oloarak true olduğu için annotation injection varsayılan olarak desteklenmektedir ve kullanımı tavsiye edilmektedir.\n\nContainer servislerine `$container-\u003eget('smarty')` şeklinde ya da `$container-\u003esmarty` şeklinde ulaşabilirsiniz.\n\n```php\n\u003c?php\n\nrequire_once 'vendor/autoload.php';\n\n$container = \\Karma\\ContainerBuilder::build(\n    \\Karma\\Container::class,\n    [\n        'smarty' =\u003e \\DI\\get(\\Karma\\Service\\SmartyService::class)\n    ]\n);\n\n$app = \\Karma\\AppFactory::create($container);\n\n$app-\u003erun();\n```\n\n## Routing\n\nRouting stratejisi olarak `[\\App\\Controller\\MainController::class, 'Index']` şeklinde bir kullanım tercih edilmiştir.\n\n```php\n\u003c?php\n\nrequire_once 'vendor/autoload.php';\n\n$container = \\Karma\\ContainerBuilder::build(\n    \\Karma\\Container::class,\n    [\n        'smarty' =\u003e \\DI\\get(\\Karma\\Service\\SmartyService::class)\n    ]\n);\n\n$app = \\Karma\\AppFactory::create($container);\n\n$app-\u003eget('/', [\\App\\Controller\\MainController::class, 'Index']);\n\n$app-\u003erun();\n```\n\n## Controller\n\nKarma Framework'de yazacağınız bir sınıfı Controller olarak kullanmak mümkün. Controller sınıfları için tavsiye edilen klasör `app/Controller`.\n\n```php\n\u003c?php namespace App\\Controller;\n\nuse \\Karma\\Controller;\n\nclass MainController extends Controller\n{\n    public function Index()\n    {\n        return 'Merhaba Dünya';\n    }\n}\n```\n\nController fonksiyonları `string` ya da `ResponseInterface` dönebilir.\n\n**JSON** response için $this-\u003ejson() **XML** response için ise $this-\u003exml() fonksiyonları kullanılabilir.\n\n## View\nView katmanı için `Smarty` ya da `Twig` gibi bağımsız bir şekilde kullanılabilen Template Engine'ler tavsiye edilmektedir.\n\nÖrnek SmartyService.php `smarty/smarty`\n```php\n\u003c?php namespace App\\Service;\n\nuse Smarty;\n\nclass SmartyService\n{\n    /**\n     * @var Smarty\n     */\n    protected $smarty;\n\n    public function __construct()\n    {\n        $this-\u003esmarty = new Smarty();\n    }\n\n    public function fetch($template, array $params = [])\n    {\n        return $this-\u003esmarty\n            -\u003eassign($params)\n            -\u003efetch($template);\n    }\n}\n```\n\nÖrnek TwigService.php `twig/twig`\n\n```php\n\u003c?php namespace App\\Service;\n\nuse Twig\\Environment;\nuse Twig\\Loader\\FilesystemLoader;\n\nclass TwigService\n{\n    /**\n     * @var Environment\n     */\n    private $twig;\n\n    public function __construct()\n    {\n        $loader = new FilesystemLoader(ROOT_DIR . '/views/twig');\n\n        $this-\u003etwig = new Environment($loader, [\n            'cache' =\u003e ROOT_DIR . '/views/twig_c',\n        ]);\n    }\n\n    public function render($name, array $context = [])\n    {\n        return $this-\u003etwig-\u003erender($name, $context);\n    }\n}\n```\n\n## Slimframework'den Karmaphp'ye Geçiş\n\nBu kısımda, mevcut bir projenizde slimframework kullanıyorsanız karmaphp'ye nasıl geçeceğiniz hakkında bilgiler  verilecek.\n\n * Controller fonksiyonlarında $request ve $response kullanmanıza gerek yok. Bunun yerine Controller içinde $this-\u003erequest ve $this-\u003eresponse kullanabilirsiniz.\n * HandleError için kendi Exception sınıflarınızı yazarak `\\Karma\\ErrorHandler` sınıfını extend ederek invokable bir sınıf ile error handling lojiğinizi geliştirebilirsiniz.\n * ErrorHandling, Middleware ve Controller içinde $request ve $response kullanmanıza gerek yok. Container üzerinden ya da doğrudan Controller üzerinden $container-\u003erequest ya da $this-\u003erequest yazarak Request ve Response objelerine erişebilirsiniz.\n * Route tanımlarında ikinci parametreyi array vererek, birinci parametresi kendi Controller sınıfınız ikinci parametre olarak da içinde kullanmak istediğiniz fonksiyon adını yazabilirsiniz. Ör: `[MyController.class, 'Edit']`\n * Request parametrelerini almak için Controller içindeyken `$this-\u003eparam('customer_id')` fonksiyonunu kullanabilirsiniz.\n * Gelen requestin POST olduğunu Controller içindeyken `$this-\u003eisPost()` fonksiyonu ile test edebilirsiniz.\n\n## Veritabanı\nVeritabanı işlemleri için orm olarak `illuminate/database` paketi önerilmektedir. Table sınıfları için `app/Table` Repo sınıfları için `app/Repo` klasörü önerilmektedir.\n\n## Servisler\nİhtiyaç duyulan servisler için `app\\Service` klasörü önerilmektedir.\n\n## Demo\nhttps://github.com/karmaphp/demo adresindeki projeyi inceleyebilirsiniz.\n\n## Krediler\n\nKrediler Özgür Yazılım dünyasına emeklerini esirgemeyen herkese gelsin.\n\n## Katkı Vermek İçin\n\nKullanın, kullanmayanlara önerin :) Önerileriniz olursa issue açabilirsiniz.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarmaphp%2Fkarma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarmaphp%2Fkarma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarmaphp%2Fkarma/lists"}