Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: matiit, dodany: 13.07.2013 15:21, tagi: php

Wszystkie wpisy z serii:

W dzisiejszej części przedstawię Ci jak skonfigurować połączenie z bazą danych, jak stworzyć i wykonać migracje. O tym jak w Laravel są obsługiwane relacje między tabelami i kilka innych rzeczy będzie następnym razem.

Co mamy do wyboru

Tak na prawdę moglibyśmy użyć dowolnej bazy danych jaka jest obsługiwana przez PHP. Do niektórych jednak Laravel oferuje nam ogromne wsparcie. Możemy wybierać spośród min. PostgreSQL, MySQL, sqlite3 i pewnie jeszcze z jakiejś o jakiej zapomniałem. Dziś skupimy się na sqlite. Sqlite praktycznie nie wymaga żadnej konfiguracji, a mimo to oferuje na prawdę spore możliwości (nie porównujemy jej jako konkurenta MySQL, tym bardziej PostgreSQl, ale jak na tak mały silnik i prostotę użycia – możliwości są spore).

Skonfigurowanie sqlite3

Odpalmy do edycji plik app/config/database.php. Znajdzmy linijkę

'default' => 'mysql',

i zmień ją na

'default' => 'sqlite',

I to tyle konfiguracji, na prawdę.

Teraz zajmiemy się…

Migracjami

Co to są migracje? Już spieszę z odpowiedzią. Migracje są to pliki z opisem zmian w strukturze bazy danych. Nie oszukujmy się, nigdy za pierwszym razem nie stworzymy pełnej, dobrej, ostatecznej struktury naszej bazy danych. Dzięki migracjom – jeśli czegoś zapomnieliśmy – po prostu dopisujemy kolejną migrację. Migracje możemy wykonywać (po kolei wg daty powstania migracji). Możemy cofać ostatnią, cofnąć wszystkie. Możemy tak na prawdę robić dużo rzeczy z nimi :)

Jakaś tabela

Wymyślmy sobie jakiś przypadek tabeli, może dwóch, jednak jednej, będzie przejrzyściej. Jaki obiekt chcemy rzeczywisty chcemy opisać? Samochód! Stwórzmy tabelę przechowującą samochody. Na razie niezbyt skomplikowaną oraz jak ktoś bardziej oczytany to stwierdzi, że tabela jest też nie znormalizowana, no ale cóż – się poprawi (albo nie).

Wybierzmy jakieś pola dla tej tabeli – zróbmy to maksymalnie prosto.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Łukasz Socha, dodany: 11.07.2013 18:03, tagi: php

Kopiowanie obiektów może się wydawać dla większości wręcz trywialne. Jednak, dla początkujących w programowaniu obiektowym może to nie być takie oczywiste.

O co chodzi?

Żeby lepiej zrozumieć problem przeanalizujmy przykład:

<?php

class Osoba {

    private $imie;

    function __construct($imie) {
        $this->imie = $imie;
    }
    public function setImie($imie) {
        $this->imie = $imie;
    }


    public function getImie() {
        return $this->imie;
    }

}

$osoba=new Osoba('Ania');
$osoba2 = $osoba;
echo $osoba->getImie()."\n"; // wyswietli "Ania"
echo $osoba2->getImie()."\n"; // wyswieli "Ania"
$osoba->setImie('Tomek');
echo $osoba->getImie()."\n"; // wyswietli "Tomek"
echo $osoba2->getImie()."\n"; // wyswieli "Tomek"

?>

Do 24 linii wszystko wydaje się oczywiste. Jednak, w ostatniej linii dostajemy „niespodziewany” wynik – zmiana imienia w obiekcie $osoba powoduje także zmianę w $osoba2. Dlaczego tak się dzieje? W linii 22 tak naprawdę nie robimy kopii obiektu jak to się dzieje w typach prostych (liczby, stringi itp.), tylko tworzymy nową referencję (odnośnik na odpowiedni adres pamięci, więcej informacji na Wikipedii) do obiektu stworzonego za pomocą zmiennej $osoba. Jeżeli chcemy skopiować obiekt musimy użyć metody __clone().

<?php

class Osoba {

    private $imie;

    function __construct($imie) {
        $this->imie = $imie;
    }
    public function setImie($imie) {
        $this->imie = $imie;
    }


    public function getImie() {
        return $this->imie;
    }

}

$osoba=new Osoba('Ania');
$osoba2 = clone $osoba;
echo $osoba->getImie()."\n"; // wyswietli "Ania"
echo $osoba2->getImie()."\n"; // wyswieli "Ania"
$osoba->setImie('Tomek');
echo $osoba->getImie()."\n"; // wyswietli "Tomek"
echo $osoba2->getImie()."\n"; // wyswieli "Ania"

?>

Autor wpisu: vonski, dodany: 10.07.2013 22:26, tagi: javascript

Programując w Javascript czasem zachodzi potrzeba sprawdzenia, czy zmienna na której operujemy jest stricte tablicą (a nie „po prostu” obiektem). Pierwszy na myśl nasuwa się oczywiście operator typeof, jednak na niewiele on się nam zda w tej sytuacji. Popatrz na poniższy przykład:

var a = [];
var b = {};

console.log( typeof a ); // object
console.log( typeof b ); // object

Są jednak dwa wyjścia z tej sytuacji. ECMAScript 5 wprowadza nową metodę Array.isArray. Dlatego test możesz przeprowadzić np. w ten sposób:

var a = [];
var b = {};

console.log( Array.isArray(a) ); // true
console.log( Array.isArray(b) ); // false

Minusem tego rozwiązania jest fakt, że nie zadziała ono w starszych, aczkolwiek nadal używanych przeglądarkach (np. IE8). Jest jednak drugie rozwiązanie, mianowicie metoda… toString():

var a = [];
var b = {};

console.log( Object.prototype.toString.call(a) ); // [object Array]
console.log( Object.prototype.toString.call(b) ); // [object Object]

Drugiego sposobu możesz już bez obaw używać w starszych wersjach IE.

Autor wpisu: kicaj, dodany: 10.07.2013 10:33, tagi: javascript

Nie raz każdy z nas przygotowywał formularz, gdzie musimy wprowadzić np. nazwę miejscowości. Problem dla Użytkownika jest to, że przy wprowadzaniu, nie określa on nam, o którą miejsowość chodzi - przecież mamy kilka miejscowości na świecie o nazwie London, czy w samej Polsce występuje dużo miejscowości np. o nazwie Nowa Wieś. Co zrobić, gdy chcemy za pomocą wprowadzonej nazwy wyświetlić ją na

Autor wpisu: batman, dodany: 06.07.2013 21:58, tagi: javascript

Poprzednim razem na wybitnie prostym przykładzie opisałem z czego składa się aplikacja Windows Store. Przyszła pora na opisanie cyklu życia aplikacji. Jeśli mieliście do czynienia z tworzeniem aplikacji na Windows Phone, zauważycie że aplikacje tworzone pod kątem Modern UI niewiele (…)

Read the rest of this entry »

Autor wpisu: Athlan, dodany: 05.07.2013 14:01, tagi: php.pl

Howdy! Recently I have faced the inconvenience that I have to develop parts of application beeing friendly-configurable on Linux and at the same time installing them on Windows is a nightmare.

What to do when do you develop on Windows, but you need the production environment based on Linux and you don’t want to buy server? Install Linux locally on Windows and run server on VirtualBox installed on Windows. The same story concerns the situation, when the production server have a lot of shit dependencies you don’t want to have on your developing environment, even it is Linux.

So how to connect VirtualBox Linux server from Windows?

  1. Download the VirtualBox and Linux distribution you want to install (.iso format will be convinience). I have coised Ubuntu, because of  rapid installation.
  2. Create a new virtual machine for your Linux. More info.
  3. Mount your .iso and install Linux on VirtualBox. Installation is really user-friendly.
  4. Now go to the setting of your virtual machine -> network adapters settings -> and change your network adapter to NAT. More info.
  5. Check if everything is ok, in particular that network adaper on virtual machine obtained the IP address. Just type:
    /sbin/ifconfig

    or:

    /sbin/ifconfig | grep addr

    Note the assigned IP address.

  6. Try to ping your virtual machine from host operating system, where VirtualBox is running:
    ping virtaul_machine_ip_address
  7. If everything is ok, your machines works mutualy. Now, install Open SSH server on your linux. For ubuntu:
    sudo apt-get install openssh-server
  8. Now, you can open the connection on your host device. On windows, you can use Putty for connect to the virtual machine’s command line.

My Ubuntu’s command line from Windows 8. Localy.

linux-windows8

Happy coddin’!

Autor wpisu: matipl, dodany: 05.07.2013 13:13, tagi: php

php-logoJak zapewne wiecie nie lubię mówić oczywistych-oczywistości. Ale kolejny raz spotykam „admina”, który uznaje wyłącznie oprogramowanie z pakietów.

W ogólności to dobre podejście, uznaje się że oprogramowanie dystrybuowane przez system pakietów w Linuksie jest sprawdzone, stabilne i bezpieczne.

Niestety system wydawniczy pakietów nie zawsze nadąża za rzeczywistością, lub nie przystaje do naszych specyficznych warunków.

Tym bardziej dotyczy to PHP oraz nginx. PHP ze względu na swój plan wydawniczy oraz specyfikę samego projektu. W wydaniach dystrybucyjnych najczęściej wszelkie dodatkowe moduły (np. PDO) są instalowane jako zewn. moduły, co wpływa na wydajność całego silnika. Dlatego najlepiej używane przez nas moduły od razu skompilować w core, a dodatki które są standardowo włączane – wyłączyć. Natomiast nginx to mimo wszystko młody projekt, który dość prężnie się rozwija, ale zdarzają się również spore wpadki. W maju 2013 roku okazało się, że wersje nginx 1.1.4-1.2.8, 1.3.9-1.4.0 posiadają sporą lukę bezpieczeństwa.

Zatem do dzieła. Pierwsza kompilacja środowiska może Wam trochę zająć, ale już kolejne aktualizacje (wczoraj ukazała się wersja PHP 5.4.17) zajmują około 5-10 minut.

Najpierw musimy pamiętać, aby nasz system operacyjny posiadał odpowiednie biblioteki, które są potrzebne do kompilacji poszczególnych aplikacji. W naszym przykładzie jest to Debian 6.0. Instalacja wymaganych zależności:

apt-get install make gcc g++ libxml2-dev zlib1g-dev bzip2 libbz2-dev libcurl4-gnutls-dev libjpeg62-dev libpng12-dev libfreetype6-dev libmcrypt-dev libmysqlclient-dev lemon libtidy-dev libxslt1-dev libpcre++-dev libssl-dev automake autoconf

Następnie ściągamy źródła PHP – http://php.net/downloads.php. Poniższe parametry konfiguracyjne powinny działać dla PHP 5.3/5.4/5.5 bez problemu.

Po rozpakowaniu źródeł w ichniejszym katalogu tworzymy sobie skrypt compile_php o zawartości:

make distclean
./configure \
--enable-fpm \
--enable-cli \
--enable-inline-optimization \
--disable-rpath \
--disable-ipv6 \
--enable-mbstring \
--enable-mbregex \
--with-mysql \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-gettext \
--with-curl \
--with-zlib \
--with-zlib-dir=/usr \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-exif \
--enable-shmop \
--with-xsl=shared \
--enable-soap=shared \
--enable-sockets \
--enable-pcntl=shared \
--with-mcrypt \
--with-bz2 \
--with-tidy \
--with-pcre-dir \
--with-pear
make -j2
make install

Pierwsza linijka wyczyści nam projekt z poprzednich kompilacji. Następne to konfiguracja i kompilacja php (z obsługą php-fpm, php-cli, PDO, MySQL, GD, JPEG/PNG, mbstring, Exif, PEAR oraz kilka innych modułów).

Polecam zakomentować 2 ostatnie linijki, aby móc sprawdzić czy configure przebiegł poprawnie. Po make install nasza instancja PHP znajdzie się w /usr/local/php.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.