![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hej
Zmieniłem bibliotekę do komunikacji mojego skryptu PHP z Mikrotikiem z https://github.com/EvilFreelancer/routeros-api-php na https://github.com/BenMenking/routeros-api Wcześniej posługiwałem się takim kodem do odczytu:
Teraz w przykładzie znalazłem:
Jak ten drugi kod przerobić żeby też mieścił się w jednej linijce? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie przerobisz tego na jednolinijkowca, bo metoda `write` nie zwraca obieku, a jedynie typ prosty: bool.
Z resztą, ja osobiście nie widzę potrzeby. Tak jak jest, jest czytelniej, a dla interpretera i tak ta różnica jest niezauważalna. Max co można zrobić, to tak:
Z kodu klasy wynika jeszcze, że możesz po prostu zrobić takie coś:
I też będzie działać jak powyżej. Ten post edytował Salvation 18.10.2022, 09:56:16 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
$client jest u Ciebie instancją klasy, która odwołuje się do różnych metod: $client->write($patch), $client->read itd. Po co chcesz to łączyć w jedna linijkę?
Nie da się podmienić obiektu $client na write($patch) bo to już nie będzie instancja i dostaniesz masę błędów. Ewentualnie jak napisał @Salvation Ten post edytował gino 18.10.2022, 09:52:43 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jak ci ta jedna linijka jest potrzebna do regexpa to
$client->write('/system/identity/print'); $parsedResponse = $client->read(); I masz jedna linijke |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tylko, że ja tak za bardzo nie umiem w programwanie obiektowe (IMG:style_emoticons/default/sad.gif) Czytałem poradniki, robiłem kursy ale nic. Może jakiś gotowiec na tym przykładzie by mnie oświecił?
Jak ci ta jedna linijka jest potrzebna do regexpa to $client->write('/system/identity/print'); $parsedResponse = $client->read(); I masz jedna linijke Zamieniłem ale wyszło coś takiego:
a chodziło by mi o to, żeby pod zmiennymi $users, $dns i $ntp_serv pojawiła się już sparsowana odpowiedź. Dlatego tak zależy mi na "jednej linijce". Ten post edytował KR2615 18.10.2022, 10:15:36 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Najprościej dopisz w klasie RouterosAPI metodę np. clientConnect(string $patch) i wrzuć w nią kod, który masz w pierwszym poście, coś takiego:
Kod public function connectClient(string $patch) { $this->write($patch); return $this->parseResponse($this->read(false)); } i będziesz miał jedną linijkę w stylu: Kod $identity = $client->connectClient('/system/identity/print'); zmieniając sobie ścieżkę jak Ci się podoba. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Fajnie, dzięki, o to właśnie mi chodziło!
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie nalezy edytować plików źródłowych. Teraz wyobraź sobie, że robisz update biblioteki i wszystkie Twoje zmiany idą się paść na zieloną łączkę...
Dlatego napisałem, byś obudował bibliotekę własną abstrakcją. Korzystasz z composera może? |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
dlatego napisałem najprościej a nie najlepiej i to chyba jest logiczne. Ucięło mi też z jakiegoś powodu resztę posta, bo pisałem, żeby zrobił jak radzisz, albo napisał własne rozszerzenie klasy i podałem tam też przykład.
Ten post edytował gino 18.10.2022, 13:14:19 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
To pamiętaj o zmianach jakie wykonałeś przy update'cie biblioteki.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie dotykałem biblioteki bo już kiedyś brutalnie się przekonałem, co to znaczy updatować biblioteki, zmieniać strukturę danych itp na przykładzie LMSa (Lan Management System), że wyszła mi z niego kompletnie osobna gałąź i nie mogłem w łatwy sposób korzystać z feature'ów wprowadzanych przez Twórców. Wszystko zrobiłem w "mojej" części kodu.
Działa dokładnie tak, jakbym chciał. Dzięki wszystkim za pomoc! ---------------- Jeszcze jedno pytanie w tym samym temacie. Dostaję od urządzenia taką odpowiedź:
Jak za pomocą kodu php znaleść nazwę interfejsu (ether2) na którym jest IP 10.9.4.209 ? |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Przeczytałem dokumentację, przejżałem przykłady ale nadal nie przychodzi mi do głowy pomysł, jak rozwiązać to zadanie.
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Demo: https://3v4l.org/EYugm Ten post edytował Salvation 21.10.2022, 20:39:06 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, działa! Sam bym tego lepiej nie wykonał ani nawet lepiej nie nazwał : )
Edit: Po dodaniu
taki fragment kodu:
wyrzuca: Cytat ncaught TypeError: strpos() expects parameter 1 to be string, null given in.... Ten post edytował KR2615 21.10.2022, 23:52:59 |
|
|
![]()
Post
#19
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
N $values[1] jest NULLem a nie tekstem. Pomysl co z tym fantem teraz zrobic
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Już wczoraj pomyślałem i stworzyłem warunek
ale chyba ze zmęczenia nie zauważyłem, że chodzi o parametr pierwszy a nie drugi (albo coś mi się pomyliło i sobie ubzdurałem, ze parametry funkcji w PHP też są numerowane od 0 : ) W każdym razie prawidłowe rozwiazanie brzmi: Dzięki za nakierowanie! Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:21 |