Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jaki wzorzec ? :/
Seth
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Chce nieco przysypieszyc dzialanie skryptu, wiec mysle o przefiltrowaniu jednego ciagu przez preg_matche.
Tekst wygladac moze tak:

test1.test2.test3
lub
test1.test2.test3.*

Oczywiscie mozna dopsiac jeszcze test4.test5 itd.

Natomiast pozostale mozliwosci takie jak:

.test.test
lub
test.test.
lub
test.*.test
lub
test.test..test
lub
test.test.**
lub
*.test.test
itp.

nie wchodza w gre.

Ogolnie mowiac potrzebne mi jest to do funkcji includujacej inne pliki - cos w stylu import z Javy czy using z c#, wiec musze przefiltorawac podany string.

Jakies pomysly na wyrazenie regularne ? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
cagrET
post
Post #2





Grupa: Zarejestrowani
Postów: 90
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Opole

Ostrzeżenie: (0%)
-----


Nie wiem dokladnie jak w Javie wyrazenie import dziala, ale u mnie wykombinowalem cos takiego (moze komus sie przyda):

[php:1:8aa77e4482]
<?php
/**
* Import system class to global namespace
* @param string $s
* @return void
* @access public
* @package import
*/
function import($s) {
static $root;
if (!isset($root)) {
$root = realpath(dirname(__FILE__) . '/../') . '/';
}

static $imported = array();
if (isset($imported[$s])) {
return;
}

$arr = explode('.', $s);
if (is_dir($root . implode('/', $arr))) {
$arr[] = $arr[count($arr) - 1];
}
$file = $root . implode('/', $arr) . '.php';
if (!file_exists($file) || !is_file($file)) {
return trigger_error("import() failed, could not import `$s`", E_USER_ERROR);
}
require_once $file;
$imported[$s] = true;
}

?>
[/php:1:8aa77e4482]

Jest kilka katalogow z bibliotekami, ponizej listing, jak sa rozlozone libsy systemowe (czyli takie ktore nie sa w zaden sposob powiazane z dana aplikacja - ogolne, przydatne w wielu aplikacjach)
Kod
system/



system/.htaccess

system/Dataspace.php

system/Example.php

system/import.php

system/license.txt

system/printR.php

system/Random.php

system/Stack.php



system/Config/

system/Config/Ini.php



system/Date/

system/Date/Common.php

system/Date/const.php

system/Date/Date.php

system/Date/Gmt.php

system/Date/Local.php

system/Date/Utility.php



system/Db/

system/Db/Db.php

system/Db/Debug.php

system/Db/debug.tpl

system/Db/Pager.php



system/Db/Mysql/

system/Db/Mysql/Mysql.php

system/Db/Mysql/Result.php



system/Db/Oci8/

system/Db/Oci8/oci8.php

system/Db/Oci8/Result.php

system/Db/Oci8/utlxplan.sql



system/Db/Pgsql/

system/Db/Pgsql/Pgsql.php

system/Db/Pgsql/Result.php



system/Db/Sql/

system/Db/Sql/Result.php

system/Db/Sql/Sql.php



system/Error/

system/Error/Handler/

system/Error/Handler/error.tpl

system/Error/Handler/Handler.php

system/Error/Handler/showSource.php



system/Html/

system/Html/Tag.php



system/Http/

system/Http/Cookie.php

system/Http/Request.php

system/Http/Response.php

system/Http/Utility.php

system/Http/Var.php



system/Http/Session/Session.php

system/Http/Session/Handler/Db.php



system/Http/Upload/Upload.php

system/Http/Upload/File.php



system/Image/

system/Image/Image.php

system/Image/Utility.php



system/Io/

system/Io/Directory.php

system/Io/File.php

system/Io/Path.php



system/Mail/

system/Mail/Mail.php

system/Mail/Utility.php



system/String/

system/String/String.php

system/String/Utility.php



system/Template/

system/Template/Plugin.php

system/Template/Template.php



system/Template/plugins/

system/Template/plugins/cycle.php

system/Template/plugins/escape.php

system/Template/plugins/htmlcheckboxes.php

system/Template/plugins/htmloptions.php

system/Template/plugins/htmlselectdate.php

system/Template/plugins/truncate.php



system/Unique/

system/Unique/mysql.sql

system/Unique/oci8.sql

system/Unique/Unique.php


Przyklady:
[php:1:8aa77e4482]
import('system.Http.Var');
import('system.Db');
import('system.Http.Cookie');
[/php:1:8aa77e4482]
Funkcja import dziala w ten sposob, ze jak bede chcial rozbudowac dana klase to nie bede musial zmieniac kodu aplikacji
Czyli w aplikacji wpisujac
[php:1:8aa77e4482]
import('system.Dataspace');
[/php:1:8aa77e4482]
Klasa zostanie includnieta, niezaleznie czy struktura bedzie taka:
Kod
system/Dataspace.php

czy taka:
Kod
system/Dataspace/

system/Dataspace/Dataspace.php

system/Dataspace/Costam.php


Biblioteki ogolne powiazane w jakikolwiek sposob z dana aplikacja trzymam w katalogu "application/".
Tam struktura klas jest podobna. np.
[php:1:8aa77e4482]
import('application.Registry');
import('application.Test.Connection');
[/php:1:8aa77e4482]

Myslalem tez nad zaimplementowaniem gwiazdki * w funkcji import czyli cos w stylu:
[php:1:8aa77e4482]
import('system.Http.*');
[/php:1:8aa77e4482]
Ale na razie jest to niepotrzebne, pozatym powstalby niepotrzebny narzut, gdyz na razie nie spotkalem sie z sytuacja zebym potrzebowal wszystkich klas z danego katalogu.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 23:22