Laravel CRUD Serie: Blog Update

<?php

...

    /**
     * Update the specified resource in storage.
     *
     * @param BlogRequest $request
     * @param  int  $id
     * @return Response
     */
    public function update(BlogRequest $request, $id)
    {
	
        try{
            $blog = Blog::findOrFail($id);
        }catch (\Exception $e) {
            return \Redirect::back();
        }
		
		// Update
		$blog->name = $request->get('name');
		
        Session::flash('message', 'Successfully updated blog!');
        return \Redirect::route('blog.index');
    }

...

 

PHP Stories: Letztes Array Element

Heute zeige ich euch, wie man mit einem kleinen Trick das letzte Element eines Arrays herausfindet.
Dabei finde ich diese Vorgehensweise besser gelöst als mit einem count().

Hier nun das Beispiel:

<?php // lastArrayExample.php
$array = array('Toby', 'John', 'Leo', 'John');

// Pointer an das Ende des Arrays setzten
end($array);

// Den Key des Elements holen
$lastKey = key($array);

foreach($array as $k => $v) {
    if($k == $lastKey) {
         echo $v . ' ist der letzte!';
    } else
	echo $v . '<br />';
}
// Ausgabe: Toby<br />John<br />Leo<br />John ist der letzte!

 

Private Packages mit Composer

Wer bereits in größeren PHP-Projekten entwickelt hat weiß, dass man um eine Paketverwaltung nicht drum herum kommt. Üblicherweise ist dies Composer. Mit Composer hat man Zugriff auf tausende Packages die vor allem in Packagist zu finden sind.

Doch manchmal kann man keine öffentlichen Pakete verwenden oder möchte explizit nur seine eigenen, privaten Pakete verwenden. Hier hat man mit Composer auch viele Möglichkeiten. Ich beschreibe hier aber in der Schnelle eine Lösung, wie es mit Bitbucket möglich wird.

Um die Pakete von Bitbucket, bzw. einem Repository anzuziehen, müssen ein paar Anpassungen an den composer.json-Dateien vorgenommen werden.

Im Hauptprojekt muss in der composer.json folgendes eingetragen werden:

{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://bitbucket.org/accountname/reponame.git"
    }
  ],
  "require": {
    "accountname/reponame": "dev-master"
  }
}

Im eigentlichen Package sieht die composer.json dann wie folgt aus:

{
  "name": "accountname/reponame",
  "version": "master",
  "dist": {
    "url": "[email protected]:accountname/reponame.git",
    "type": "vcs"
  }
}

PHP Stories: Extract()

Einstieg in PHP Stories

Ich möchte heute mit einer neuen Serie Beginnen. Ich nenne sie „PHP Stories“.
Ich werde in regelmäßigen Abständen einen kleinen Beitrag erstellen, in dem ich eine PHP Funktionalität erklären werde und dessen Vorteile nennen werde.

Heute beginne ich mit der „extract“ Funktion.

Extract()

Manchmal kann es vorkommen, dass du in deinem Projekt mehrere Variablen einer Funktion oder Methode übergeben musst, bei dem jeder Parameter mit seinem Namen zu identifizieren ist.
Eine Möglichkeit wäre die Funktion „func_get_args()„, doch in diesem Fall würde man den Namen des Parameters nicht bekommen, sondern lediglich den Index. Zum Beispiel: $args[0], $args[1]…
Mit „extract()“ bekommst du jedoch alle Parameter mit Ihrem „richtigen“ Namen. Sogar die Reihenfolge spielt hierbei keine Rolle.

Hier mal ein Beispiel:

<?php // example.php
function personInfo(array $info = [])
{
	extract($info);
	echo "Mein Name ist $name und ich bin $age alt. Ich arbeite als $job.";
}

personInfo([
	'name'	=> 'Tobias Maxham',
	'age'	=> 25,
	'job'	=> 'Software Engineer',
	'hobby'	=> 'Schwimmen',
]);
// Ausgabe => Mein Name ist Tobias Maxham und ich bin 25 alt. Ich arbeite als Software Engineer.

Dies wird vor allem in großen Frameworks verwendet, wenn viele Daten z.B. von einem Controller an eine View übertragen werden müssen.

In der nächsten Ausgabe werde ich die Funktion „compact()“ erklären, die genau das Gegenteil macht.

GitHub Challenge: Erstes Fazit

Seit mittlerweile 23 Tagen mache ich bei der GitHub Streaking Challenge mit. Und ich muss sagen, es macht mehr Spaß als ich gedacht habe.
Am meisten habe ich bemerkt, dass die Codequalität enorm steigt. Außerdem wird man generell beim Programmieren besser. Ich schaue immer, dass ich über die Woche hinweg an mehreren Projekten gleichzeitig arbeite. So habe ich zusätzlich auch etwas Abwechslung dabei.
Es gibt jedoch auch schwierige Phasen. Diese sind vor allem am Wochenende. Da die Zeit mit der Familie von der Challenge nicht eingeschränkt werden darf, muss ich mir für die 2-3 Tage über das Wochenende immer eine gute Strategie überlegen. In der Regel schaue ich, dass ich möglichst früh schon etwas an Projekten mache. So bleibt zumindest der Versuch da, im Laufe des Tages weitere Aktionen zu machen.
Und wenn es mal überhaupt nicht klappt, dass erstelle ich eine Issue in der ich meine Ziele für die nächsten Tage definiere. So bleibt der Streak erhalten.

Ich hoffe ich schaffe die 100 Tage. Ein viertel ist ja fast schon geschafft.