Avatar billede chrisrj Forsker
18. september 2018 - 11:28 Der er 13 kommentarer og
1 løsning

libphonenumber class found!?

Hejsa

Føler mig sgu lidt som en idiot at måtte spørge om dette. Men jeg kan ikke få libphonenumber (https://github.com/giggsey/libphonenumber-for-php) til at køre på mit webhotel. :-/

Jeg har uploaded mappen og og det "ekstra" lib https://github.com/giggsey/Locale til serveren.

Men jeg bliver mødt med denne fejl, når jeg kører eksempelkoden:
Fatal error: Class 'PhoneNumberUtil' not found


Stierne passer, så hvad er problemet??


Min kode:
<?
header('Content-type: text/html; charset=utf-8');
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

    include ("locale/src/Locale.php");
    include ("libphonenumber/src/CountryCodeToRegionCodeMap.php");
    include ("libphonenumber/src/PhoneNumberUtil.php");
   
    $swissNumberStr = "044 668 18 00";
    $phoneUtil = PhoneNumberUtil::getInstance();
    try {
        $swissNumberProto = $phoneUtil->parse($swissNumberStr, "CH");
        var_dump($swissNumberProto);
    } catch (\libphonenumber\NumberParseException $e) {
        var_dump($e);
    }
?>
Avatar billede chrisrj Forsker
18. september 2018 - 11:34 #1
Hmm...

Ændring af
$phoneUtil = PhoneNumberUtil::getInstance();

til
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();

giver så denne fejl:
Fatal error: Class 'libphonenumber\DefaultMetadataLoader' not found
Avatar billede chrisrj Forsker
18. september 2018 - 11:42 #2
Argh, det er jo sygt.

Nå, men efter at have included alle disse filer, fik jeg et resultat:

    include ("locale/src/Locale.php");
    include ("libphonenumber/src/CountryCodeToRegionCodeMap.php");
    include ("libphonenumber/src/PhoneNumberUtil.php");
    include ("libphonenumber/src/MetadataLoaderInterface.php");
    include ("libphonenumber/src/DefaultMetadataLoader.php");
    include ("libphonenumber/src/MetadataSourceInterface.php");
    include ("libphonenumber/src/MultiFileMetadataSourceImpl.php");
    include ("libphonenumber/src/MatcherAPIInterface.php");
    include ("libphonenumber/src/RegexBasedMatcher.php");
    include ("libphonenumber/src/PhoneNumber.php");
    include ("libphonenumber/src/CountryCodeSource.php");
    include ("libphonenumber/src/Matcher.php");
    include ("libphonenumber/src/PhoneMetadata.php");
    include ("libphonenumber/src/PhoneNumberDesc.php");
    include ("libphonenumber/src/NumberFormat.php");
    include ("libphonenumber/src/PhoneNumberType.php");
    include ("libphonenumber/src/ValidationResult.php");

*suk*!
Avatar billede Slater Ekspert
18. september 2018 - 11:46 #3
Den er beregnet til at bruge Composers autoloader til automatisk at inkludere de filer den skal bruge. Hvis du ikke bruger det, så ja, så er du nødt til at inkludere det hele manuelt.
Avatar billede chrisrj Forsker
18. september 2018 - 11:48 #4
Jah, det er jeg klar over.

Men et så stort projekt burde da have alle includes samlet, så man ikke skal gætte sig til det. Men det er sikkert for nemt...
Avatar billede Slater Ekspert
18. september 2018 - 12:55 #5
Igen, det ville løse sig selv hvis du brugte PSR-4 autoloaderen, som det er beregnet til.

Jeg vil stærkt anbefale dig at lære at bruge Composer. Det er en de facto standard i PHP i dag, og bliver kun sværere at komme uden om.
Avatar billede chrisrj Forsker
19. september 2018 - 00:46 #6
Det er muligt jeg misforstår hvordan man bruger det. Men min opfattelse er, at det kræver direkte adgang til serveren bag webhotellet. Er det forkert opfattet?
Avatar billede Slater Ekspert
19. september 2018 - 07:23 #7
Ja, det gør det ikke. Det er et kommandolinjeværktøj, men du skal kun bruge kommandolinjen på din udviklingsmaskine. Når du f.eks. har kørt kommandoen "composer install" lokalt, så laver den en mappe i roden der hedder /vendor. Denne mappe skal bare kopieres med op på webhotellet, så virker det - så du behøver altså slet ikke køre Composer der.
Avatar billede chrisrj Forsker
19. september 2018 - 10:28 #8
Jeg kører ikke lokalt, så det er ikke en mulighed.

Og i øvrigt har jeg en windåse maskine. ;)
Avatar billede Slater Ekspert
19. september 2018 - 14:18 #9
Det fungerer fint på Windåse.

Men hvordan i alverden udvikler du uden en lokal kopi? Direkte på serveren via FTP eller hvad?
Avatar billede chrisrj Forsker
19. september 2018 - 14:26 #10
Jah, jeg har nok heelt vågen da jeg skrev.. :D Og så stejlede min hjerne da den så ordet kommandolinjen!! :p

Jada. Det er en udviklingserver. :)
Avatar billede Slater Ekspert
19. september 2018 - 16:33 #11
Lyder stadig unødigt besværligt at arbejde direkte på serveren - og også et problem når du ikke har adgang til kommandolinje. Men hvis du gerne vil bruge Composer, så er der stadig muligheden for at kopiere det ned på din lokale maskine, køre Composer-kommandoen, kopiere det op på serveren igen, og så arbejde videre som du plejer. Lidt besværligt, naturligvis - og jeg vil da stadig klart anbefale at arbejde lokalt.
Avatar billede chrisrj Forsker
19. september 2018 - 16:43 #12
Besværligt? Hvordan det? Det er da mega nemt. Skriv, gem, test. Rinse repeat til det spiller. :)

"Men hvis du gerne vil bruge Composer..." ...men det vil jeg helst ikke. :D Jeg er helt klart et lean setup. :)

Er PSR-4 autoloader mindre besværlig end Composer?
Avatar billede Slater Ekspert
19. september 2018 - 18:12 #13
Besværligt fordi FTP er møglangsomt, det er svært at søge i flere filer, du har ingen versionering, du afgrænser dig selv fra kommandolinjeværktøjer, compile tools osv.

Hvis du er glad for det, så er det naturligvis fint - men der er en grund til at ingen professionelle ville finde på at gøre det, og du ser netop et af problemerne her, ved at du ikke kan bruge Composer.

PSR-4 er bare en standard for hvordan den autoloader skal fungere. Composer er det mest almindeligt brugte til at overholde den standard og udføre autoloaderen, men der findes mange andre.
Avatar billede chrisrj Forsker
19. september 2018 - 18:40 #14
Mine projekter er ret små, så hastighed og søgninger er ikke et problem for mig. :)
Og jeg afskyer kommandolinjeværktøjer som pesten. :D Jeg gik HELT bort fra den slags, da windows 95 kom frem. :p

Point taken. ;)

Ah, ok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester