Jeszcze jeden blog o PHP

Radosne twórczości leniwego programisty PHP

Dodawanie obiektu SimpleXmlElement jako dziecka do innego obiektu SimpleXmlElement

Skomentuj »

Application - XML Podczas budowania struktury XML z wykorzystaniem SimpleXmlElement dla jachcenawakacje.pl natknąłem się na problem dodawania do obiektu typu SimpleXmlElement jako dziecka innego obiektu SimpleXmlElement – wyciętego z innej struktury XML. Problem jest o tyle dziwny, że metoda SimpleXmlElement::addChild() przyjmuje jako wartość tylko i wyłącznie łańcuch znaków. W związku z dość sporą ilością kodu, jaki trzeba by napisać, aby przenieść jedną strukturę XML do innej takie rozwiązanie nie wchodziło w grę. Z pomocą przyszedł kod udostępniony przez członka społeczności Stackoverflow.

<?php
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><element></element>');
$request = $xml->addChild('request');
$request->addChild('type', 'test');
$sxe = simplexml_load_string('<sxe></sxe>');
$inner1 = $sxe->addChild("inner1");
$inner2 = $inner1->addChild("inner2");
$inner3 = $inner2->addChild("inner3");
$toDom = dom_import_simplexml($xml);
$fromDom = dom_import_simplexml($sxe);
$toDom->appendChild($toDom->ownerDocument->importNode($fromDom, true));
header('Content-type: application/xml; charset=utf-8');
echo $xml->asXML();

Oczywiście najważniejsze są tutaj linie 9-11, które to realizują całe zadanie kopiowania struktury pomiędzy XML.
Efekt poniżej:

<?xml version="1.0" encoding="UTF-8"?>
<element>
    <request>
        <type>test</type>
    </request>
    <sxe>
        <inner1>
            <inner2>
                <inner3/>
            </inner2>
        </inner1>
    </sxe>
</element>

Link do oryginału: http://stackoverflow.com/questions/4778865/php-simplexml-addchild-with-another-simplexmlelement/4778964#4778964

Written by filipgorczynski

2011.06.15 at 11:06:42

Battery Widget – poziom baterii w Androidzie

Skomentuj »

Battery Widget Android Gdy tylko zakupiłem telefon od razu otrzymałem rady, aby zainstalować sobie jakiś wskaźnik poziomu baterii. Z tego co dało się wyszukać w Android Market oraz na podstawie tego co polecili znajomi wybrałem Battery Widget. No i przy nim zostałem.
W rzeczywistości sam wskaźnik poziomu baterii jest skrótem do ustawień związanych z zarządzaniem energią pozwalając na włączanie i wyłączanie odpowiednich modułów telefonu.
Zalety Zalety:

  • na ekranie zajmuje slot 1×1
  • przejrzysty

Wady Wady:

  • Nie jest instalowany domyślnie w telefonie :)

Bezpośredni link do widgetu: Battery Widget w Android Market

Written by filipgorczynski

2011.06.13 at 21:05:35

Nie można dodać widżetu na ekran

Skomentuj »

Kalendarz Android Jakimś dziwnym trafem udało mi się doprowadzić mojego Androida do problemu uniemożliwiającego dodanie widżetu kalendarza do ekranu. Z innymi widżetami nie próbowałem.
Czy jest to rozwiązanie właściwe i nie szkodzące telefonom? Nie potrafię odpowiedzieć, więc informuję, że wszelkie rzeczy, które wykonujecie na swoich telefonach robicie na własną odpowiedzialność.
Doprowadza to do praktycznie całkowitego zresetowania telefonu, czegoś na kształt przywrócenia ustawień fabrycznych, a co za tym idzie przywraca tapetę, ustawienia domyślne widżetów, itp. Aplikacje jednak działają jak należy – nie zauważyłem w związku z tym żadnych problemów.
Przyczyny ustalić mi się nie udało, jednak rozwiązaniem okazało się wyczyszczenie danych związanych z procesem HTC Sense, który znaleźć można w:

Ustawienia > Aplikacje > Zarządzaj aplikacjami > Wszystkie aplikacje > HTC Sense > Wyczyść dane

Written by filipgorczynski

2011.06.12 at 11:00:48

SimpleXMLElement innerHTML

Skomentuj »

W przypadku otrzymania niezbyt przyjaznego pliku XML, w którym to w tagu znajduje się wrzucony kod HTML (elementy p, span, strong, itp) nie otoczony <![CDATA[ i ]]>, zawartość tego tagu można by pobrać w następujący sposób:


echo preg_replace('#</?tag[^>]*>#is', '', (string)$xml->tag->asXML());

Written by filipgorczynski

2011.06.08 at 09:20:02

HTC Desire z systemem Android

Skomentuj »

android Nadeszła chwila, kiedy to trzeba wreszcie przesiąść się z umierającego Symbiana na ostatni krzyk mody – zielonego robota. Dnia 13.05.2011 (piątek) przesiadłem się – miejmy nadzieję szczęśliwie – na urocze i podobno nieźle rozgarnięte dziecko Google’a. Zostaje przeczytać manual i cieszyć się z możliwości jakie to cudo oferuje. Z przykrością odsuwam od codziennych pieszczot moją wysłużoną, ukochaną Nokie E50 i mam nadzieję, że w zakamarkach szuflady zazna należytego Jej spokoju. Od dziś przedmiotem mych tortur oraz ponadprzeciętnego obmacywania zostaje HTC Desire.

Dziękuję Ci Nokio za te wszystkie lata spędzone razem, gdy byłaś przy mnie w dzień i w nocy, w smutku i radości.

Written by filipgorczynski

2011.05.13 at 22:09:48

Napisane w Android, Narzędzia, Sprzęt

SimpleXMLElement i count – zliczanie elementów obiektu w różnych wersjach PHP

Skomentuj »

Zliczanie elementów w obiekcie SimpleXMLElement. Jak się okazuje, możemy się zdziwić, jeśli na którymś z serwerów posiadamy wcześniejsze niż 5.3 wersje PHP.

$xml = new SimpleXMLElement("plik.xml", null, true);
$allNodes = 0;
if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
   $allNodes = $xml->Project->count(); // PHP >= 5.3
} else {
   $allNodes = count($xml->children()); // PHP < 5.3
}

Written by filipgorczynski

2011.05.11 at 21:19:54

Przeniesienie wybranych elementów z początku tablicy na jej koniec

Skomentuj »

var t = ['jeden', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'];
var t2 = t.splice(0,2);
console.log(t.concat(t2));
// ["trzy", "cztery", "pięć", "sześć", "jeden", "dwa"]

Written by filipgorczynski

2011.04.26 at 16:24:43

Tworzenie nowego projektu w Yii

Skomentuj »

Ostatnio coraz więcej frameworków zostaje wyposażonych w skrypty pozwalające jeszcze bardziej przyspieszyć tworzenie aplikacji poprzez generowanie jak największej ilości kodu. W przypadku frameworka Yii możliwości jest sporo, od generowania struktury katalogów i plików samej aplikacji, po generowanie modułów, modeli, całej struktury CRUD w kontrolerach a w nowszych wersjach także kodu pozwalającego synchronizowanie struktury baz danych.
Nazewnictwo dla katalogów jest następujące:
WebRoot – katalog główny serwera HTTP – jego zawartość prezentuje się po wpisaniu http://localhost/ w pasku adresu przeglądarki. Dla mnie będzie to x:\htdocs\.
YiiDir – katalog w którym został zainstalowany framework Yii. W moim przypadku jest to x:\htdocs\yii.
AppDir – katalog aplikacji – tworzonego projektu. Na tutejsze potrzeby nazwijmy go demo. W tym przypadku, będzie to x:\htdocs\demo.
Oto co musimy zrobić, aby stworzyć nowy projekt z wykorzystaniem frameworka Yii.
Na początku oczywiście musimy posiadać zainstalowany framework – pobieramy go najlepiej na stronie projektu Yii framework. Wszystkie pliki wypakowujemy w katalogu YiiDir.
Następnym krokiem jest uruchomienie okna poleceń – cmd.exe i wpisanie następujących poleceń oraz słówka Yes w odpowiednim momencie.

> cd x:\htdocs
> yii\framework\yiic webapp demo
Create a Web application under 'x:\htdocs\demo'? [Yes|No]   Yes
  unchanged css/bg.gif
  unchanged css/form.css
  unchanged css/ie.css
  unchanged css/main.css
  unchanged css/print.css
  unchanged css/screen.css
   generate index-test.php
   generate index.php
  unchanged protected/.htaccess
  unchanged protected/components/Controller.php
  unchanged protected/components/UserIdentity.php
  unchanged protected/config/console.php
  unchanged protected/config/main.php
  unchanged protected/config/test.php
  unchanged protected/controllers/SiteController.php
  unchanged protected/data/schema.mysql.sql
  unchanged protected/data/schema.sqlite.sql
  unchanged protected/data/testdrive.db
  unchanged protected/models/ContactForm.php
  unchanged protected/models/LoginForm.php
  unchanged protected/tests/bootstrap.php
  unchanged protected/tests/functional/SiteTest.php
  unchanged protected/tests/phpunit.xml
  unchanged protected/tests/WebTestCase.php
  unchanged protected/views/layouts/column1.php
  unchanged protected/views/layouts/column2.php
  unchanged protected/views/layouts/main.php
  unchanged protected/views/site/contact.php
  unchanged protected/views/site/error.php
  unchanged protected/views/site/index.php
  unchanged protected/views/site/login.php
  unchanged protected/views/site/pages/about.php
  unchanged protected/yiic
  unchanged protected/yiic.bat
  unchanged protected/yiic.php
  unchanged themes/classic/views/.htaccess

Your application has been created successfully under x:\htdocs\demo.
>

Tak, to już. Posiadamy działającą aplikację. Wystarczy wejść na stronę http://localhost/demo by zobaczyć działającą stronę kontakt z formularzem, logowanie oraz wyświetlanie stron, proste menu, breadcrumb.

Written by filipgorczynski

2011.04.17 at 20:37:50

Google nie przestanie zaskakiwać :)

Skomentuj »

Życzenia od Google'a

Written by filipgorczynski

2011.03.21 at 10:01:09

Napisane w Luźne

Drag & Drop dla wierszy w tablicy [jQuery UI]

Skomentuj »

Drag & drop powstały z drobnej modyfikacji Sortable z jQuery UI; do ściągnięcia kompletny przykład sortable.zip

Written by filipgorczynski

2011.03.15 at 19:30:04

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.