{"id":1555,"date":"2016-08-11T06:54:03","date_gmt":"2016-08-11T06:54:03","guid":{"rendered":"https:\/\/anexia.com\/blog\/de\/?p=1555"},"modified":"2022-04-19T11:56:12","modified_gmt":"2022-04-19T09:56:12","slug":"codeigniter-4-was-aendert-sich","status":"publish","type":"post","link":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/","title":{"rendered":"CodeIgniter 4 &#8211; Was \u00e4ndert sich?"},"content":{"rendered":"<p>Wie bereits im vorigen CodeIgniter-Beitrag angesprochen, wurde das CodeIgniter-Framework von <a href=\"https:\/\/ellislab.com\/\" target=\"_blank\" rel=\"noopener\">EllisLab <\/a>(welche das Framework urspr\u00fcnglich entwickelt haben), an das <a href=\"http:\/\/www.bcit.ca\/\" target=\"_blank\" rel=\"noopener\">BCIT <\/a>(British Columbia Institute of Technology) \u00fcbergeben.<\/p>\n<p>Bereits wenige Wochen nach dieser \u00dcbernahme kam eine neue, \u00fcberarbeitete Version, n\u00e4mlich Version 3.x des Frameworks, heraus.<br \/>\nObwohl damit zwar eine relativ solide Basis geschaffen werden konnte, hinkte das Framework seiner Konkurrenz immer noch teilweise stark hinterher.<br \/>\nSo hatte CodeIgniter im Vergleich zu <a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener\">Laravel <\/a>verh\u00e4ltnism\u00e4\u00dfig immer weniger Chancen, um bei Entwicklern zu punkten, da der Funktionsumfang und die Art, wie damit programmiert werden kann, bei der Konkurrenz immer eine Spur besser war.<\/p>\n<p>Doch mit Version 4 von CodeIgniter k\u00f6nnte sich das Blatt nun doch wenden.<\/p>\n<p>&nbsp;<\/p>\n<h1>Der gro\u00dfe Umstieg<\/h1>\n<p>Im offiziellen CodeIgniter-Forum wurde am 26.06.2016 bereits verk\u00fcndet, dass der erste Meilenstein von CI4 nun erreicht wurde. Gleichzeitig wurde das Repository auch auf GitHub transferiert: <a href=\"https:\/\/github.com\/bcit-ci\/CodeIgniter4\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/bcit-ci\/CodeIgniter4<\/a><\/p>\n<p>Eine Dokumentation ist <a href=\"https:\/\/codeigniter4.github.io\/userguide\/\" target=\"_blank\" rel=\"noopener\">hier <\/a>zu finden. Zu beachten ist nur, dass auch diese aktuell noch nicht fertig, und daher teilweise noch ziemlich l\u00fcckenhaft ist.<\/p>\n<p>Die wohl auff\u00e4lligste und offensichtlichste \u00c4nderung zu den Vorg\u00e4nger-Versionen ist die Tatsache, dass es nun ein &#8222;public&#8220;-Verzeichnis gibt.<\/p>\n<p>Wie auch bei anderen Frameworks der Fall, hat dies einen essentiellen und sicherheitsbedingten Hintergrund: die Trennung von Applikation\/Framework und \u00f6ffentlichen Ressourcen (wie beispielsweise Javascript, CSS oder Bilder).<br \/>\nDadurch, dass das Framework nun nicht mehr so freiz\u00fcgig preisgegeben wird, f\u00e4llt es potentiellen Angreifern wesentlich schwerer, Sicherheitsl\u00fccken (o.\u00e4.) zu finden bzw. gezielt auszunutzen.<\/p>\n<p>Das Einzige, was daf\u00fcr serverseitig notwendig ist, ist eine kleine Modifikation der Vhost-Konfiguration (sofern vorhanden bzw. m\u00f6glich). Der Document-Root wird nun nicht mehr ins Hauptverzeichnis von CodeIgniter gelegt, sondern in den Public-Ordner.<\/p>\n<p>Eine solche Vhost-Konfiguration k\u00f6nnte nun beispielsweise so aussehen:<\/p>\n<pre class=\"lang:apache decode:true \">&lt;VirtualHost *:80&gt;\r\n\tServerName codeigniter4.local\r\n\tDocumentRoot \/var\/www\/vhosts\/codeigniter4.local\/public\/\r\n&lt;\/VirtualHost&gt;<\/pre>\n<p>&nbsp;<\/p>\n<h2>Die wesentlichsten \u00c4nderungen<\/h2>\n<p>Ganz offensichtlich ist hier mal die relativ hoch angesetzte Mindestanforderung an den PHP-Interpreter. F\u00fcr die Installation und den Betrieb wird hier PHP &gt; 7.0 gefordert.<\/p>\n<p>Ein Blick auf die Ordnerstruktur des Frameworks erinnert auf den ersten Blick ziemlich stark an Zend 1 oder Laravel.<\/p>\n<p>CI4 stellt nun (wie beispielsweise bereits von Laravel bekannt) f\u00fcr die Datenbank Migrations und Seeds bereit. Dadurch fallen Deployments und \u00c4nderungen nun wesentlich leichter, da Datenbank-Anpassungen nun nicht mehr manuell, sondern automatisiert durchgef\u00fchrt werden. Optionale Seeders dienen dann in weiterer Folge der Bef\u00fcllung der Datenbank mit Dummy-Daten.<\/p>\n<p>F\u00fcr die Konfiguration der Environments (also der Umgebung, in welcher das Framework l\u00e4uft, und die damit verbundenen Konfigurationen) k\u00f6nnen nun via\u00a0DotENV ( .env) konfiguriert werden.<br \/>\nAls Vergleich: CI2 bot nur die M\u00f6glichkeit f\u00fcr eine einzige Umgebung, CI3 dann f\u00fcr drei (Development, Testing, Production).<\/p>\n<p>&nbsp;<\/p>\n<h2>Installation<\/h2>\n<p>CodeIgniter setzt nun nach dessen Rewrite mit Version 4 auf das bereits vielen vertraute PSR-4 Autoloading in Kombination mit <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener\">Composer<\/a>.<\/p>\n<p>F\u00fcr alle, die nicht wissen, was Composer ist: hierbei handelt es sich um ein kommandozeilenbasiertes Paketverwaltungssystem f\u00fcr PHP, durch welches stets die aktuellsten Vendor-Pakete installiert und deren Versionen zentral gemanaged und upgedated werden k\u00f6nnen.<\/p>\n<p>In der aktuellen Dev-Version von CI4 nutzt das Framework \u00fcberwiegend Pakete vom Zend Framework und vom Symfony Framework.<\/p>\n<p>Nachdem alle Dateien des Github-Repositories in das entsprechende Verzeichnis am Server kopiert wurden, muss als erstes Composer initialisiert werden.<br \/>\nDazu wird ein neues Terminal (bzw. unter Windows die Eingabeaufforderung\/CMD) ge\u00f6ffnet und in das Hauptverzeichnis von CodeIgniter navigiert.<\/p>\n<p>Sofern Composer am jeweiligen System installiert ist, kann nun via <span class=\"lang:default decode:true crayon-inline\">composer setup<\/span>\u00a0 Composer f\u00fcr das neue Projekt initialisiert werden.<\/p>\n<p><a href=\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_composer-setup.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1560\" src=\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_composer-setup.png\" alt=\"CodeIgniter 4: Composer Setup\" width=\"580\" height=\"384\" srcset=\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_composer-setup.png 582w, https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_composer-setup-325x215.png 325w, https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_composer-setup-300x198.png 300w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>Wenn man nun im Browser die URL des neuen Vhosts aufruft, wird einem auch schon der Welcome-Screen angezeigt.<\/p>\n<p><a href=\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_welcome.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1563\" src=\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_welcome.png\" alt=\"CodeIgniter 4: Welcome-Screen\" width=\"580\" height=\"314\" srcset=\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_welcome.png 1920w, https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_welcome-325x176.png 325w, https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_welcome-300x163.png 300w, https:\/\/anexia.com\/blog\/wp-content\/uploads\/2016\/06\/codeigniter4_welcome-1024x555.png 1024w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>Wer sich den Public-Ordner mal n\u00e4her ansieht, wird auch gleich feststellen, dass sich dort bereits eine .htaccess mit einer Basis-Konfiguration befindet.<\/p>\n<p>Des Weiteren gibt es dort auch eine robots.txt, welche derzeit alle Crawling-Bots fernh\u00e4lt. Bei der robots.txt handelt es sich um eine Textdatei, welche Informationen f\u00fcr die Crawler der Suchmaschinen enth\u00e4lt &#8211; also welche Bereiche indiziert werden d\u00fcrfen, und welche nicht.<\/p>\n<p>&nbsp;<\/p>\n<h2>Konfiguration<\/h2>\n<p>Die Basiskonfiguration welche bis CI3 noch unter <strong>\/application\/config.php<\/strong> zu finden war, befindet sich nun unter <strong>\/application\/Config\/App.php<\/strong> (Gro\u00df- und Kleinschreibung in den Pfaden und Dateinamen beachten!)<\/p>\n<p>Die Konfiguration ist nun auch kein einfaches Array mehr, sondern eine eigenst\u00e4ndige Klasse (mit Vererbung und eigenen Namespaces) geworden:<\/p>\n<pre class=\"lang:php decode:true \">&lt;?php namespace Config;\r\n\r\nuse CodeIgniter\\Config\\BaseConfig;\r\n\r\nclass App extends BaseConfig\r\n{\r\n\r\n\t\/*\r\n\t|--------------------------------------------------------------------------\r\n\t| Base Site URL\r\n\t|--------------------------------------------------------------------------\r\n\t|\r\n\t| URL to your CodeIgniter root. Typically this will be your base URL,\r\n\t| WITH a trailing slash:\r\n\t|\r\n\t|\thttp:\/\/example.com\/\r\n\t|\r\n\t| If this is not set then CodeIgniter will try guess the protocol, domain\r\n\t| and path to your installation. However, you should always configure this\r\n\t| explicitly and never rely on auto-guessing, especially in production\r\n\t| environments.\r\n\t|\r\n\t*\/\r\n\tpublic $baseURL = '';\r\n\r\n\t\/*\r\n\t|--------------------------------------------------------------------------\r\n\t| Index File\r\n\t|--------------------------------------------------------------------------\r\n\t|\r\n\t| Typically this will be your index.php file, unless you've renamed it to\r\n\t| something else. If you are using mod_rewrite to remove the page set this\r\n\t| variable so that it is blank.\r\n\t|\r\n\t*\/\r\n\tpublic $indexPage = 'index.php';\r\n\t...<\/pre>\n<p>F\u00fcr einen reibungslosen Betrieb von CI4 ist notwendig, dass die Base-URL hier einmalig konfiguriert wird. Dies wurde \u00fcbrigens bewusst aus Sicherheitsgr\u00fcnden so gew\u00e4hlt.<\/p>\n<p><span class=\"lang:php decode:true crayon-inline \">public $baseURL = &#8218;http:\/\/codeigniter4.local\/&#8216;;<\/span><\/p>\n<p>Die optionale Konfiguration der Datenbank wird in der <strong>Database.php<\/strong> vorgenommen. Zu beachten ist hier, dass es jeweils zwei Konfigurationen gibt: eine f\u00fcr die Applikation selbst und eine zweite f\u00fcrs Testing (z.B. PHPUnit).<\/p>\n<p>Diese Parameter lassen sich auch via DotEnv (.env) konfigurieren. Hierf\u00fcr k\u00f6nnen solche Parameter auch in der .env-Datei im Rootverzeichnis definiert werden.<\/p>\n<pre class=\"lang:default decode:true \">database.default.username = 'root';\r\ndatabase.default.password = 'passw0rd!';\r\ndatabase.default.database = 'codeigniter4';<\/pre>\n<p>&nbsp;<\/p>\n<p><strong><em>Coding-Beispiele folgen, sobald die Version 4 des Frameworks einigerma\u00dfen stabil geworden ist. Momentan gibt es da noch einige Bugs, durch welche u.a. die Migrations noch nicht richtig funktionieren.<\/em><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h1>Roadmap<\/h1>\n<p>Hier nun eine kurze Aufstellung der bereits umgesetzten und noch geplanten Funktionen. Diese sind auch dem aktuellen User-Guide zu entnehmen.<\/p>\n<p>&nbsp;<\/p>\n<h2>Meilenstein 1<\/h2>\n<p>Im ersten Meilenstein konnten diese folgenden Funktionen implementiert bzw. \u00fcberarbeitet werden:<\/p>\n<ul>\n<li>Autoloader (PSR-4)<\/li>\n<li>Logging<\/li>\n<li>Fehlerbehandlung (Exception Handling)<\/li>\n<li>HTTP Request\/Response<\/li>\n<li>Routing<\/li>\n<li>Controller<\/li>\n<li>Models<\/li>\n<li>Database (MySQL &amp; Postgres)<\/li>\n<li>Konfiguration<\/li>\n<li>Sicherheit<\/li>\n<li>Views<\/li>\n<li>Sessions<\/li>\n<li>Basisfunktionen f\u00fcrs Debugging und Profiling<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Meilenstein 2<\/h2>\n<p>Diese Funktionen befinden sich derzeit in Beabeitung (Stand: Juli\/August 2016):<\/p>\n<ul>\n<li>Helper-Funktionen<\/li>\n<li>Internationalisierungs-Features (i18n)<\/li>\n<li>Caching<\/li>\n<li>E-Mail<\/li>\n<li>Verschl\u00fcsselung (Encryption)<\/li>\n<li>Form-Validierung<\/li>\n<li>Image-Library<\/li>\n<li>Pagination<\/li>\n<li>Uploader<\/li>\n<\/ul>\n<p>Es ist durchaus m\u00f6glich, dass es nach Abschluss dieses Meilensteins bereits eine erste Stable-Version oder zumindest ein Release-Candidate (RC) geben wird.<\/p>\n<p>Die geplante Fertigstellung dieses Meilensteins ist im Dezember 2016.<\/p>\n<p>&nbsp;<\/p>\n<h2>Meilenstein 3<\/h2>\n<p>Dieser Meilenstein stellt nach aktuellem Stand nur Erweiterungen und neue Funktionen bereit, welche (theoretisch) auch in Form von Updates nachgereicht werden k\u00f6nnten.<\/p>\n<ul>\n<li>FTP<\/li>\n<li>XML-RPC<\/li>\n<li>Zip<\/li>\n<li>Typography<\/li>\n<li>Template Parser<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h1>Fazit<\/h1>\n<p>Ein Blick auf den aktuellen Entwicklungsstand von CodeIgniter 4 macht soweit schon mal einen mehr als positiven Eindruck. Da diese Version des Frameworks bereits PHP 7 als Grundvoraussetzung erfordert, ist es auf dem neuesten Stand der Technik. Allerdings k\u00f6nnte es zum jetzigen Zeitpunkt bei vielen Providern und Shared-Hosting-Anbietern noch problematisch sein, da noch nicht alle auf diesen Zug aufgesprungen sind, und daher in vielen F\u00e4llen noch kein PHP 7 anbieten k\u00f6nnen.<br \/>\nMeiner Meinung nach hat das BCIT mit deren CI4 aus aktueller Sicht schon mal gute Chancen sich ad\u00e4quat etablieren zu k\u00f6nnen, da jetzt auch nahezu alle Wehwehchen der Vorg\u00e4nger-Versionen\u00a0 beseitigt und die Software von Grund auf neu geschrieben wurde.<\/p>\n<p>Da sich das Framework aktuell noch in der Entwicklungsphase befindet, sollte es noch keinefalls in produktiven Umgebungen eingesetzt werden!<\/p>\n<p>Zuletzt noch gute Nachrichten an alle Anh\u00e4ngerinnen und Anh\u00e4nger der 3.x-Version: das BCIT plant bereits ein neues Update: v3.1.0 &#8211; dieses wird gleichzeitig aber auch das letzte aus der 3er-Reihe werden.<\/p>\n<p>Bei bestehenden 3.x-Projekten sollte dann voraussichlich ein Upgrade auf die Version 4 ebenfalls m\u00f6glich sein (jedoch wurde dies seitens des BCIT noch nicht offiziell best\u00e4tigt).<\/p>\n<p>Man darf also gespannt sein, was da noch kommt!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hatte CodeIgniter im Vergleich zu Laravel immer weniger Chancen, um bei Entwicklern zu punkten, k\u00f6nnte sich das Blatt mit Version 4 von CodeIgniter nun wenden.<\/p>\n","protected":false},"author":15,"featured_media":515,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[80,315,78,316,73,14,5,314],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>CodeIgniter 4 - Was \u00e4ndert sich? - ANEXIA Blog<\/title>\n<meta name=\"description\" content=\"Hatte CodeIgniter im Vergleich zu Laravel immer weniger Chancen, um bei Entwicklern zu punkten, k\u00f6nnte sich das Blatt mit Version 4 von CodeIgniter nun wenden.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CodeIgniter 4 - Was \u00e4ndert sich? - ANEXIA Blog\" \/>\n<meta property=\"og:description\" content=\"Hatte CodeIgniter im Vergleich zu Laravel immer weniger Chancen, um bei Entwicklern zu punkten, k\u00f6nnte sich das Blatt mit Version 4 von CodeIgniter nun wenden.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/\" \/>\n<meta property=\"og:site_name\" content=\"ANEXIA Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/anexiagmbh\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-11T06:54:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-19T09:56:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2015\/01\/Manuel-Wutte_anexia-blau_web.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1067\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Manuel Wutte\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@_ANEXIA\" \/>\n<meta name=\"twitter:site\" content=\"@_ANEXIA\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Manuel Wutte\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/\",\"url\":\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/\",\"name\":\"CodeIgniter 4 - Was \u00e4ndert sich? - ANEXIA Blog\",\"isPartOf\":{\"@id\":\"https:\/\/anexia.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2015\/01\/Manuel-Wutte_anexia-blau_web.jpg\",\"datePublished\":\"2016-08-11T06:54:03+00:00\",\"dateModified\":\"2022-04-19T09:56:12+00:00\",\"author\":{\"@id\":\"https:\/\/anexia.com\/blog\/#\/schema\/person\/926f6b9e5aeed88b145cf86d87fd09de\"},\"description\":\"Hatte CodeIgniter im Vergleich zu Laravel immer weniger Chancen, um bei Entwicklern zu punkten, k\u00f6nnte sich das Blatt mit Version 4 von CodeIgniter nun wenden.\",\"breadcrumb\":{\"@id\":\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#primaryimage\",\"url\":\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2015\/01\/Manuel-Wutte_anexia-blau_web.jpg\",\"contentUrl\":\"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2015\/01\/Manuel-Wutte_anexia-blau_web.jpg\",\"width\":1600,\"height\":1067},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/anexia.com\/blog\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CodeIgniter 4 &#8211; Was \u00e4ndert sich?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/anexia.com\/blog\/#website\",\"url\":\"https:\/\/anexia.com\/blog\/\",\"name\":\"ANEXIA Blog\",\"description\":\"[:de] ANEXIA Blog - Technischen Themen, Anexia News und Insights [:]\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/anexia.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/anexia.com\/blog\/#\/schema\/person\/926f6b9e5aeed88b145cf86d87fd09de\",\"name\":\"Manuel Wutte\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/anexia.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9528a61f48f4294cd5f7cd8a4141bd55?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9528a61f48f4294cd5f7cd8a4141bd55?s=96&d=mm&r=g\",\"caption\":\"Manuel Wutte\"},\"url\":\"https:\/\/anexia.com\/blog\/author\/mwu\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CodeIgniter 4 - Was \u00e4ndert sich? - ANEXIA Blog","description":"Hatte CodeIgniter im Vergleich zu Laravel immer weniger Chancen, um bei Entwicklern zu punkten, k\u00f6nnte sich das Blatt mit Version 4 von CodeIgniter nun wenden.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/","og_locale":"de_DE","og_type":"article","og_title":"CodeIgniter 4 - Was \u00e4ndert sich? - ANEXIA Blog","og_description":"Hatte CodeIgniter im Vergleich zu Laravel immer weniger Chancen, um bei Entwicklern zu punkten, k\u00f6nnte sich das Blatt mit Version 4 von CodeIgniter nun wenden.","og_url":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/","og_site_name":"ANEXIA Blog","article_publisher":"https:\/\/www.facebook.com\/anexiagmbh\/","article_published_time":"2016-08-11T06:54:03+00:00","article_modified_time":"2022-04-19T09:56:12+00:00","og_image":[{"width":1600,"height":1067,"url":"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2015\/01\/Manuel-Wutte_anexia-blau_web.jpg","type":"image\/jpeg"}],"author":"Manuel Wutte","twitter_card":"summary_large_image","twitter_creator":"@_ANEXIA","twitter_site":"@_ANEXIA","twitter_misc":{"Verfasst von":"Manuel Wutte","Gesch\u00e4tzte Lesezeit":"7\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/","url":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/","name":"CodeIgniter 4 - Was \u00e4ndert sich? - ANEXIA Blog","isPartOf":{"@id":"https:\/\/anexia.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#primaryimage"},"image":{"@id":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#primaryimage"},"thumbnailUrl":"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2015\/01\/Manuel-Wutte_anexia-blau_web.jpg","datePublished":"2016-08-11T06:54:03+00:00","dateModified":"2022-04-19T09:56:12+00:00","author":{"@id":"https:\/\/anexia.com\/blog\/#\/schema\/person\/926f6b9e5aeed88b145cf86d87fd09de"},"description":"Hatte CodeIgniter im Vergleich zu Laravel immer weniger Chancen, um bei Entwicklern zu punkten, k\u00f6nnte sich das Blatt mit Version 4 von CodeIgniter nun wenden.","breadcrumb":{"@id":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#primaryimage","url":"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2015\/01\/Manuel-Wutte_anexia-blau_web.jpg","contentUrl":"https:\/\/anexia.com\/blog\/wp-content\/uploads\/2015\/01\/Manuel-Wutte_anexia-blau_web.jpg","width":1600,"height":1067},{"@type":"BreadcrumbList","@id":"https:\/\/anexia.com\/blog\/de\/codeigniter-4-was-aendert-sich\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/anexia.com\/blog\/de\/"},{"@type":"ListItem","position":2,"name":"CodeIgniter 4 &#8211; Was \u00e4ndert sich?"}]},{"@type":"WebSite","@id":"https:\/\/anexia.com\/blog\/#website","url":"https:\/\/anexia.com\/blog\/","name":"ANEXIA Blog","description":"[:de] ANEXIA Blog - Technischen Themen, Anexia News und Insights [:]","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/anexia.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/anexia.com\/blog\/#\/schema\/person\/926f6b9e5aeed88b145cf86d87fd09de","name":"Manuel Wutte","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/anexia.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9528a61f48f4294cd5f7cd8a4141bd55?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9528a61f48f4294cd5f7cd8a4141bd55?s=96&d=mm&r=g","caption":"Manuel Wutte"},"url":"https:\/\/anexia.com\/blog\/author\/mwu\/"}]}},"lang":"de","translations":{"de":1555,"en":6909},"amp_enabled":true,"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/posts\/1555"}],"collection":[{"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/comments?post=1555"}],"version-history":[{"count":51,"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/posts\/1555\/revisions"}],"predecessor-version":[{"id":6911,"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/posts\/1555\/revisions\/6911"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/media\/515"}],"wp:attachment":[{"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/media?parent=1555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/categories?post=1555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/anexia.com\/blog\/wp-json\/wp\/v2\/tags?post=1555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}