När Composer inte kan hämta paket

Den nya pakethanteraren för PHP – Composer – kan vara mycket behändig liten sak. Den kan sköta uppdatering, installation, beroenden etc för paket i din PHP-applikation. Den kan sköta laddning av filer så du slipper hämta in filer varje gång du ska använda en klass.

Men senaste stunden har den fått mig att rycka hår från mitt huvud! Jag försökte installera template-motorn Smarty. Vad jag än gjorde fick jag fel …

[RuntimeException] Package could not be downloaded

Jag körde skriptet från min server som drivs med Ubuntu. Jag körde det från den mapp och webbplats där jag skulle installera Smarty. Det visade sig att Smarty hämtas från ett SVN-förråd (Subversion/SVN, versionshanteringsprogrammet). Jag hade visserligen noterat detta i förbifarten men tänkt att det där löser Composer av sig självt. Icke.

Lösningen
För att Composer ska kunna hämta filer från SVN måste det vara installerat på servern. Jag installerade det

apt-get install subversion

… och efter kunde jag köra

composer update

… och äntligen laddas min Smarty hem och läggs in i rätt mapp, och den läggs till i min fil för autoload av klasser. Klappat och klart!

Alltså: Om du inte lyckas hämta paket med Composer, tänk på att du kanske behöver ha Subversion installerat!

En titt på PHP av Rasmus Lerdorf på PHP konferensen i London 2012

På förra årets PHP-konferens i Londin gav Rasmus Lerdorf oss hans tankar om PHP. Ganska intressant, han pratar bland annat om att vi ibland gör det svårare för oss än vad vi behöver. Ibland kanske objektorientering inte är alldeles nödvändigt, och vi koncentrerar oss för mycket på verktygen istället för att lösa människors problem. Han pratar här också om framtiden för PHP.

Det finns fler videos, slides, PDF m.m. från konferensen i London, i Berlin etc. Där kan man hitta månag intressanta föreläsningar.

Hosting på webbserver under kursens gång

I kommande version av PHP-kursen kommer en plats på webbserver ingå, som ett alternativ till att jobba lokalt på din dator. En tanke med det är att man inte ska haka upp sig på mjukvaruinstallation, utan komma igång att koda direkt. Mer information kommer när innan vi startar upp nästa omgång.

Framtiden för PHP

Vad ligger i framtiden för PHP? Förra året kom version 5.4, men tidigare har versionerna kommit väldigt sparsamt. Nu har utvecklarna bestämt sig för att släppa versioner mer kontinuerligt, med en tidsplan. En version om året, i år kommer alltså PHP version 5.5, nästa år version 5.6 etc. PHP 5.3 stöds bara till 2014! Därefter är det dags att släppa 5.3, som jag tror många fortfarande använder. Här ser du David Soria Parra prata om planerna på PHP Conference London 2013…

Till PHP-konferens i Berlin

Den 2 – 5 juni åker jag till en internationell PHP-konferens i Berlin. Därifrån kommer jag försöka rapportera med bilder om föreläsningarna och när det händer något intressant. En hel del av deras information är på tyska, men jag har försäkrat mig om det att finns mycket på engelska också ;) Det finns en rad föreläsningar att se fram emot, t.ex. om Nginx, responsivm design, strategier m.m.

phpconference

Planer på en avancerad PHP-kurs

På grund av efterfrågan finns det planer på en avancerad PHP-kurs, som komplement till den grundkurs vi har. För att göra det bästa möjliga är jag intresserad av vad DU som kan PHP tycker är mest intressant att lära sig utöver basfunktioner och enkel databashantering. Skriv gärna förslag bland kommentarerna. Nackdelen och fördelen med PHP är att det förstås finns alldeles för mycket för att ta med allt ;)

Några förslag än så länge (tack till medlemmarna i PHP-gruppen):

  • Autoladdning av klasser
  • Phpunit
  • Olika Frameworks
  • Datbaslager
  • PDO
  • Objektorienterad programmering
  • MVC
  • Composer
  • Namespaces
  • Reflection
  • Bildhantering med ImageMagick
  • Templates
  • …(fyll på med byggstenar) …

Licensen för dig som verkligen vill dela med dig av kod

Det finns extremt enkel licens för dig som verkligen vill dela med dig av kod. Den heter WTFPL (”Do What The Fuck you want to Public License”) :) Kort och gott så tillåter den det mesta.

Så då slipper du fundera över GPL2 vs GPL3 vs LGPL vs BSD vs MIT vs CC Attribution och så vidare.

Exempel på några som använder WTFPL:

Du kan läsa vidare på WikiPedia. Jag tror framtida kodmaterial på den här kursen kommer använda sig av WTFPL som licens. Eller liknande om nu svärord skrämmer någon.

Behöver du en mer rumsren licens

Förfasas du över ordet fuck så finns det alternativ, t.ex. Creative Commons Attribution 3.0 License CC BY 3.0. Duger inte den heller så kan du säkert forska lite själv på The opensource initiativ

Är det löning?

Genom gruppen på Facebook, PHP Sverige, såg jag medlemmen Pontus skriva om det här roliga projektet, ”Är det löning”. Håll koll på när det är löning, och till det finns till och med ett API ;) Tack Pontus!

Det är kul med utbyte i sådana här grupper tycker jag. Det gör det också enklare att jobba tillsammans med sitt nätverk, att hitta hjälpa när man behöver. Jag har hittat några liknande grupper på Google+.

Men börja med att kolla in när det är löning!

ardetloning

Efterfrågan på PHP-konsulter

Jag har på senaste tiden fått fler och fler efterfrågningar om jobb som PHP-konsult. Jag har hört företag nämna att det de hittar kunniga utvecklare/systemvetare inom .NET, men när det gäller PHP är det svårare att få tag på. Kanske är det här bara ett sammanträffande, kanske har jag blivit lättare att hitta. Annars är det en stor efterfrågan på oss. Vad tror du?

OK att ”skrapa” innehåll?

Är det ok att skrapa innehåll från en sajt (t.ex. med PHPs funktion curl). och visa upp det på sin egen webbplats utan att fått ett godkännande? I fallet jag funderar på gäller det sökresultat från bland annat Google. Jag råkade nämligen på att detta efterfrågades i ett arbetsprov, och att man dessutom uppmanades att publicera resultatet.

Jag har väckt frågan bland annat i min grupp på Facebook, ”PHP Sverige”. Slutsatsen jag kommer fram till, efter en rad kloka svar från medlemmarna, är att det allar minst ligger i en gråzon. I vilket fall är det inte att rekommendera eftersom det inte är tillåtet i Googles villkor, troligen kommer man blockeras efter ett tag.

Hämta innehåll i sök på ”rätt sätt”

Vill man hämta sökresultat finns dock ett API från Google, och vissa andra sökmotorer har fria API för detta. Det finns fortfarande trafik-begränsning i Googles API men den är då väldigt hög.

Vill du läsa mer om Googles API så kan jag rekommendera Google Developers.

Snygg felsökning i PHP med print_r

Ett litet tips hur du gör enkel felsökning i PHP med print_r(). Det är troligen en av de vanligaste felsökningsmetoder jag använder i PHP, för att till exempel se om en array skickas rätt. print_r() skriver ut innehållet i en array, så här beskrivs funktionen i online-manualen:

Prints human-readable information about a variable

Men inte nog med det, print_r kan returnera värdet till en variabel istället, och den kan dessutom skriva ut din array välformaterat. Genom att sätta <pre> framför och </pre> blir det lite lättare att läsa!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// En array skapas på något sätt
// här gör jag det manuellt för att testa
$minarray = array(
         'banan' => 'gul',
         'blåbär' => 'blå',
         'äpple' => 'rött'
    );
 
// Någonstans i ditt skript, där du behöver se att 
// variabeln innhåller rätt information
$check = '<pre>' . print_r($minarray, true) . '</pre>';
 
// Senare...
echo $check;
?>

Resultatet, snyggt (nåja) och läsbart :)

Felsökning i PHP

Genom att lägga informationen i en variabel går den hantera i en miljö där funktion och layout är uppdelad (som t.ex. MVC).

Tips om dina metoder för felsökning i PHP

Om du har metoder att felsöka i PHP, tveka inte att tips PHPkurs.se, skicka ett mail till mattias@kurswebben.se eller skriv en kommentar till det här inlägget! :)

Den ultimata texteditorn?

Jag tror jakten på den ultimata texteditorn för att skriva PHP-kod nått sin ände, för mig i alla fall. Sedan en tid tillbaka använder jag Sublime 2 för webbutveckling. Den här editorn har allt jag kan önska mig, men håller ändå gränssnittet rent och snyggt.

Sublime 2 - Den ultimata texteditorn?

Några funktioner som jag uppskattar enormt:

  • Multiple selection
    Redigera på fler ställen samtidigt, det tar ett tag att hitta rätt användningsområde men attans så bra det är när man vänjer sig.
  • Snabbkommandon för att navigera
    Ctrl + R för att snabbt hitta rätt i långa dokument, Ctrl + P för att snabb hitta rätt fil elelr rätt plats med funktionen ”Goto Anything”, Ctrl + Shift + P för att komma åt kommandon.
  • Delade vyer
    Du kan del på fönster i fler kolumner och ha olika filter öppna i varje, s.k. ”Split Editing”.
  • Genomtänkt
    Det kanske låter som ett konstigt argument, men alla smaå funktioner känns genomtänkta, och är det något som inte passar kan man troligen ändra det lätt.
  • Snabb
    Trots att det finns mycket under huven är editorn mycket snabb.
  • Överblick på dokumentet
    Till höger har jag en list där jag se all kod i dokumentet, och var jag är i koden. Man kan även använda den för att scrolla. När jag fått filer med tusentals rader kod på halsen är jag rätt glad åt den här listen.
  • Allt det vanliga…
    Kort och gott det som brukar finnas, färgteman för syntax och gränssnitt, projekthantering, snippets, sök och ersätt.

Jag rekommenderar alla som jobbar med PHP att prova den här :) Det finns en gratisversion men då får man påmminelser om att köpa, så vill man slippa det obehaget får man köpa en ganska billig licens.

På TKJ kan du läsa om fler editorer, där finns bland annat min andra favorit Komodo Edit med.

Kraftfulla verktyg för WordPressutvecklare

Jag jobbar mycket med WordPress och har hittat några kraftfulla verktyg för WordPressutvecklare. Det första jag vill tipsa om är Pods Framework, en vidareutveckling som hjälper dig integrera extern data i WordPress, eller skapa ny data inom WordPress-system. Det har förstås gått att göra tidigare genom kod, men nu går det lite snabbare och automatiserat.

Med admingränssnitt kan du hantera data både från WordPress egna hantering för metadata eller från externa tabeller. Med samma gränssnitt skapar du nya innehållstyper, kategoriseringar och annat…

Så, om du jobbar mycket med WordPress och ofta försöker hantera annan data med egna ”Custom Post Types” och med andra metoder, kolla in Pods Framework!

Själv använder jag det för tillfället till en ny version av min privata hemsida med portfolio. Jag lär hojta här när den är klar! :D Vi har även en hel del andra godbitar på gång här på kursen, men som är för tidigat att berätta om, så håll utkik.

När och-tecken försvinner i din url

När och-tecken försvinner i din url kan det vara svårt att hitta orsaken. Varför skickas inte data, eller varför kommer den inte fram? Det är lätt att man börjar leta på helt fel ställe. Men om du skriver om din adress med .htaccess och mod rewrite kan de tvara så att den tar bort ampersand, dvs och-tecken. Lägg till flaggan [B] i dina omskrivningsregler så ska det fungera.

Escape backreference

Det hela är lite mer komplicerat, men jag råkade på fenomenet när mina och-tecken som skickades i en url försvann. Här kan du läsa mer om B-flaggan och hur den fungerar.

Hämta sökförslag med MySQLs funktioner

Just nu arbetar jag delvis med en stor sökfunktion för att register. Att hämta bra förslag när folk börjar skriva i en sökruta är en utmaning, speciellt när det finns flera sorters information som ska hämtas, och ibland tillsammans. Det finns en rad funktioner i MySQL som är till stor hjälp, LIKE, REGEXP, EXISTS, subquerys med mera. INSTR är en funktion som hjälper att se om det finns ett värde i databasen som förekommer i en textsträng.

Om användaren skrivit ‘phpkodare i örebro med omnejd’, så kan du se om det finns en kategori i databasen som förekommer i textsträngen:

SELECT * FROM category WHERE 
     INSTR('phpkodare i örebro med omnejd', category_name);

Varefter man lägger till fler och fler sökdelare gäller det förstås att se till att en sökfunktion inte blir seg. En cache på gjorda sökningarna kan vara till stor hjälp…

Svensk Facebook-grupp för PHP

Jag skapade precis en svensk grupp för PHP på Facebook, PHP Sverige. Jag trodde det redan skulle finnas, som det finns för t.ex. WordPress, men jag hittade ingen. Tänkte det kan vara bra för att utbyta idéer och uppdrag. Häng gärna på.

Läsa in filnamn med svenska tecken

Ett problem när man bygger på äldre system brukar vara teckenkodning, speciellt för oss som använda svenska tecken ibland. Igår skulle jag läsa in ett dokument som hade ö i filnamnet. De olika dataformaten var i det här fallet blandade melan UTF8 och Latin 1/ISO-8859-1 (därför att det är ett gammal projekt som byggs på).

utf8_encode() och utf8_decode() kan man komma långt med, men jag lyckades inte få till det i det här fallet.

Räddaren i nöden
Med iconv kan man konvertera strängar mellan olika teckninkodningar:

$filename = iconv("ISO-8859-1","UTF-8//TRANSLIT//IGNORE", $oldfilename );

Det går inte stänga av XAMPP?

Genom en elev och egen installation upptäckte jag ett problem när man installera XAMPP. Det går inte stänga av XAMPP? Jo, men man måste starta det som Administratör även om man redan är inloggad som Administratör. Annars kan man klicka man Stop-knapparna i XAMPPs kontrollpanel för Apache och MySQL hur mycket man vill utan att lyckas, utan någon varning/förklaring från programmet. Det beror på UAC (User Account Control) i Windows 7.

XAMPP är ett installationspaket med servermjukvara vi använder på kursen. Där ingår bland annat Apache, MySQL, PHP.