یکی از مرسومترین متد هایی که برای تولید اعداد تصادفی در PHP از اون استفاده میکنیم، متد
متد
متد
ولی با اینحال، هیچ یک از متد های
برای همین اگر نیاز به تولید اعداد رندوم cryptographic دارید، توصیه میکنم از متد های
💎 Channel: @DevelopixPHP
rand هستمتد
rand با وجود استفاده زیاد، تقریبا منسوخ و غیربهینه محسوب میشه و بهصورت drop-in میتونیم با متد جدیدتری بهاسم mt_rand جایگزینش کنیممتد
mt_rand از الگوریتم Mersenne Twister استفاده میکنه که حدودا 4 برابر سریعتر از الگوریتم مورد استفاده rand هستولی با اینحال، هیچ یک از متد های
rand یا mt_rand ایمن نیستند و به اصطلاح cryptographic secure نیستند، در اصل با پی بردن به seed اولیهشون میشه کل بازی رو در دست گرفتبرای همین اگر نیاز به تولید اعداد رندوم cryptographic دارید، توصیه میکنم از متد های
random_int و random_bytes استفاده کنید، که معمولا چندین برابر کندتر از جنریتور های بالا هستند، ولی امنیت بهتری دارند💎 Channel: @DevelopixPHP
👍12❤🔥2👎1🔥1
معمولا در PHP برای سر و کله زدن با String ها از متد های خانواده str استفاده میکنیم
مثلا برای گرفتن اندازه رشته، از متد
نکتهای که حائز اهمیت است، این است که استفاده از متد های str برای کاراکتر های Unicode و UTF توصیه نمیشود
چرا که متد های str به صورت خالی با byte سر و کار دارند
مثلا ایموجیها را در نظر بگیرید، ایموجیها معمولا 3 بایت حجم اشغال میکنند، به این علت که شکل نمایشی آنها با شکل نوشتاری آنها متفاوت است
مثلا
از جمله دلایلی که validate کردن length یا سر و کله زدن با String های یونیکدی و UTF ای را در PHP پیچیده میکند، نداشتن درک درمورد توابع MB است
به صورت خلاصه، اگر سر و کارتان با byte های یک String است، توابع str برای شما کفایت میکند
ولی اگر با متن های غیرساده سر و کار دارید، استفاده از متد های MultiByte یک ضرورت است، هرچند که چندین برابر کندتر است
💎 Channel: @DevelopixPHP
مثلا برای گرفتن اندازه رشته، از متد
strlen و برای پیدا کردن مختصات یک کاراکتر از strpos و به همین ترتیب برای سایر موارد نیز از سایر متد های خانواده str استفاده میکنیمنکتهای که حائز اهمیت است، این است که استفاده از متد های str برای کاراکتر های Unicode و UTF توصیه نمیشود
چرا که متد های str به صورت خالی با byte سر و کار دارند
مثلا ایموجیها را در نظر بگیرید، ایموجیها معمولا 3 بایت حجم اشغال میکنند، به این علت که شکل نمایشی آنها با شکل نوشتاری آنها متفاوت است
مثلا
strlen برای ایموجی 😒 معادل 3 است، ولی mb_strlen آن معادل 1 استاز جمله دلایلی که validate کردن length یا سر و کله زدن با String های یونیکدی و UTF ای را در PHP پیچیده میکند، نداشتن درک درمورد توابع MB است
به صورت خلاصه، اگر سر و کارتان با byte های یک String است، توابع str برای شما کفایت میکند
ولی اگر با متن های غیرساده سر و کار دارید، استفاده از متد های MultiByte یک ضرورت است، هرچند که چندین برابر کندتر است
💎 Channel: @DevelopixPHP
🔥12👍4👎1
اوپن سوله (OpenSwoole) یک Extension بسیار قوی و کارآمد برای PHP است
در واقع OpenSwoole یک مکمل و SuperCharge کننده برای PHP است و قابلیتهایی که PHP همیشه کمبود داشته را به PHP اضافه میکند
از جمله قابلیت های OpenSwoole:
وبسرور HTTP بسیار قدرتمند و سریع با توانایی هندل کردن چندین هزار درخواست بر ثانیه (حداقل 10 برابر بیشتر از وبسرور داخلی PHP)
پشتیبانی از کو روتینها (Coroutine) در PHP و ممکن کردن برنامهنویسی Async
پشتیبانی از Hook های متعدد برای قابلیت های built-in خود PHP از جمله CURL و MySQL و …
پشتیبانی از برنامهنویسی MultiProcess و MultiThread و Async
پشتیبانی از gRPC و قابلیت پروتکلنویسی
قابلیت برنامهنویسی Event Driven و ریختن قیمه JS ها توی ماست PHP ها
و کلی قابلیت دیگه
به صورت خلاصه، اگر PHP کار میکنید و هنوز از OpenSwoole استفاده نمیکنید، دارید کلی مزیت رو از دست میدید
💠 گروه OpenSwoole
💎 Channel: @DevelopixPHP
در واقع OpenSwoole یک مکمل و SuperCharge کننده برای PHP است و قابلیتهایی که PHP همیشه کمبود داشته را به PHP اضافه میکند
از جمله قابلیت های OpenSwoole:
وبسرور HTTP بسیار قدرتمند و سریع با توانایی هندل کردن چندین هزار درخواست بر ثانیه (حداقل 10 برابر بیشتر از وبسرور داخلی PHP)
پشتیبانی از کو روتینها (Coroutine) در PHP و ممکن کردن برنامهنویسی Async
پشتیبانی از Hook های متعدد برای قابلیت های built-in خود PHP از جمله CURL و MySQL و …
پشتیبانی از برنامهنویسی MultiProcess و MultiThread و Async
پشتیبانی از gRPC و قابلیت پروتکلنویسی
قابلیت برنامهنویسی Event Driven و ریختن قیمه JS ها توی ماست PHP ها
و کلی قابلیت دیگه
به صورت خلاصه، اگر PHP کار میکنید و هنوز از OpenSwoole استفاده نمیکنید، دارید کلی مزیت رو از دست میدید
💠 گروه OpenSwoole
💎 Channel: @DevelopixPHP
👍16
یکی از کمبود هایی که در زبان PHP بهعنوان یک زبان برنامهنویسی مدرن امروزی حس میشود، کتابخانههای مرتبط با هوش مصنوعی و یادگیری ماشین است
در راستای جبران این کمبود، کتابخانه RubixML یکی از اولین کتابخانه های Machine Learning و Deep Learning در این زبان است
این کتابخانه دارای ساختار OOP و Developer Friendly برای توسعهدهندگان PHP است
همچنین در حال حاضر بیش از 40 الگوریتم یادگیری نظارت شده و غیرنظارت شده را پشتیبانی میکند
از ETL و پیشپردازش و چندگانهسنجی هم پشتیبانی میکند
در حالت کلی، یکی از کاملترین کیتهای یادگیری ماشین برای PHP است و از Pipeline ها پشتیبانی میکند و دارای Tokenizer های متنوعی است
البته قابل ذکر است که در مقایسه با کتابخانههایی مثل Tensorflow یا ML.net مانند مقایسه 206 با لندکروز عمل میکند و جای توسعه و پیشرفت زیادی دارد
همچنین در حال حاضر Tokenizer های قدرتمندی برای زبانهای یونیکدی مثل فارسی ندارد و باید خودتان پیادهسازی کنید
با این حال، وجود و توسعه چنین کتابخانهای برای PHP خبر خوبی است و آیندهای روشن دارد
💎 Channel: @DevelopixPHP
در راستای جبران این کمبود، کتابخانه RubixML یکی از اولین کتابخانه های Machine Learning و Deep Learning در این زبان است
این کتابخانه دارای ساختار OOP و Developer Friendly برای توسعهدهندگان PHP است
همچنین در حال حاضر بیش از 40 الگوریتم یادگیری نظارت شده و غیرنظارت شده را پشتیبانی میکند
از ETL و پیشپردازش و چندگانهسنجی هم پشتیبانی میکند
در حالت کلی، یکی از کاملترین کیتهای یادگیری ماشین برای PHP است و از Pipeline ها پشتیبانی میکند و دارای Tokenizer های متنوعی است
البته قابل ذکر است که در مقایسه با کتابخانههایی مثل Tensorflow یا ML.net مانند مقایسه 206 با لندکروز عمل میکند و جای توسعه و پیشرفت زیادی دارد
همچنین در حال حاضر Tokenizer های قدرتمندی برای زبانهای یونیکدی مثل فارسی ندارد و باید خودتان پیادهسازی کنید
با این حال، وجود و توسعه چنین کتابخانهای برای PHP خبر خوبی است و آیندهای روشن دارد
💎 Channel: @DevelopixPHP
👍12❤4🔥1
یکی از نکات بسیار مهمی که تقریبا در تمامی زبانها وجود دارد ولی برنامهنویسان از آن آگاه نیستند، منطق اجرای حلقهها میباشد
در تصویر بالا میتوانید ببینید که دو کد مشابه، که اکثرا هم حالت اول آن را مینویسیم، چقدر میتواند باعث غیربهینه بودن کد شود
نکته مهم این پست اینجاست که تمامی کد های داخل condition حلقه، در هر iteration اجرا میشوند و اگر حلقهتان از توابع داینامیک مثل count یا … استفاده میکند، در هر iteration شما آرایه را count میکنید که این بهینه نیست
💎 Channel: @DevelopixPHP
در تصویر بالا میتوانید ببینید که دو کد مشابه، که اکثرا هم حالت اول آن را مینویسیم، چقدر میتواند باعث غیربهینه بودن کد شود
نکته مهم این پست اینجاست که تمامی کد های داخل condition حلقه، در هر iteration اجرا میشوند و اگر حلقهتان از توابع داینامیک مثل count یا … استفاده میکند، در هر iteration شما آرایه را count میکنید که این بهینه نیست
💎 Channel: @DevelopixPHP
👍22🔥1
🤔 میدونستید با php میتونید تگ های html بسازید؟
با استفاده از کلاس DOMDocument این کار امکان پذیر هست
😍 کد بالا بسیار خوانا و ساده نوشته شده برای درک این موضوع
👤 Matin Soleymani
💎 Channel: @DevelopixPHP
با استفاده از کلاس DOMDocument این کار امکان پذیر هست
😍 کد بالا بسیار خوانا و ساده نوشته شده برای درک این موضوع
👤 Matin Soleymani
💎 Channel: @DevelopixPHP
👍28❤2🔥1
Forwarded from | Codilo |
🍉 یلدای امسال رو کُدیلویی بگذرونید!
🍓 تا پایان روز جمعه با دعوت دو کاربر جدید به کدیلو، فایل های کدیلو رو رایگان دریافت کنید
🥝 یلدای خوبی داشته باشید (:
💎 @Codilo
🍓 تا پایان روز جمعه با دعوت دو کاربر جدید به کدیلو، فایل های کدیلو رو رایگان دریافت کنید
🥝 یلدای خوبی داشته باشید (:
💎 @Codilo
❤2
یه چیزی که از php8 اضافه شده و چیز خفنیه همین تعریف پراپرتی ها هست
در پی اچ پی های قدیمی تر روند این بود که توی کلاس Car میبینید پراپرتی ها تعریف میشد و در کانستراکتور مقدار دهی میشد
اما در پی اچ پی هشت به بعد یه روش جدید اومد که کد های مارو کوتاه تر میکنه مثل کلاس Car2
میبینید که پراپرتی ها تعریف نشدن و توی ورودی کانستراکتور هم تعریف و هم مقدار دهی میشن !
که این باعث میشه کد های ما کوتاه تر بشه
و هیچ تغییری توی خروجی ها نداریم
نکته حائز اهمیت این هست که توی Interface ها و توی abstract function ها نمیتونیم از این ویژگی استفاده کنیم :)
👤 Matin Soleymani
💎 Channel: @DevelopixPHP
در پی اچ پی های قدیمی تر روند این بود که توی کلاس Car میبینید پراپرتی ها تعریف میشد و در کانستراکتور مقدار دهی میشد
اما در پی اچ پی هشت به بعد یه روش جدید اومد که کد های مارو کوتاه تر میکنه مثل کلاس Car2
میبینید که پراپرتی ها تعریف نشدن و توی ورودی کانستراکتور هم تعریف و هم مقدار دهی میشن !
که این باعث میشه کد های ما کوتاه تر بشه
و هیچ تغییری توی خروجی ها نداریم
نکته حائز اهمیت این هست که توی Interface ها و توی abstract function ها نمیتونیم از این ویژگی استفاده کنیم :)
👤 Matin Soleymani
💎 Channel: @DevelopixPHP
👍16🔥2
Forwarded from Quera
کوئرا جامعه برنامهنویسان ایران
⌛️۵۰درصد تخفیف فقط تا ۲۴ ساعت
بهترین فرصت شروع PHP
📚 دوره پروژهمحور برنامهنویسی وب با PHP
(آموزش تفکر شیگرایی، امنیت، پایگاهداده، مفاهیم وب و ...)
👨🏻💻 با توسعهی پروژههای واقعی شرکت دیجیکالا 👩🏻💻
⏺ کاملا آنلاین با امکان پرسش و پاسخ با مدرسان دوره
کد تخفیف:
☑️ آشنایی بیشتر با دوره و پیش ثبتنام رایگان:
🔗 https://quera.org/r/49xv9
➖➖➖➖➖➖➖
@Quera_ir
👎4❤3
یه مورد جذاب توی php رو باهم یاد بگیریم :)
توی php 8 به بعد یه ویژگی اضافه شده که شما میتونید هر کدوم از پارامتر فانکشن رو مقدار دهی کنید بزارید از روی تصویر و مثال بگم که بهتر متوجه بشید
ما یه function login داریم که چند تا ورودی میپذیره و دوتا از ورودی ها اپشنال هستن و مقدار دیفالت دارن حالا ما شاید میخوایم به اخرین مورد که مقدار دیفالت داره یه مقداری بدیم اون موقع چی؟
توی php های ورژن قبل مجبور بودیم همه رو مقدار دهی کنیم که به اون مورد برسیم یا که همون مقدار دیفالت رو بهشون بدیم (لاین 8)
اما توی php 8 یه فیچر اضافه شده که شما میتونید با زدن اسم متغییر و یک دو نقطه جلوش مقدار دهی کنید
جوری که توی لاین 14 میبینید
چند تا نکته داره
اگه از این مدل مقدار دهی استفاده کنید باید از اون به بعد رو هم به همین شکل مقدار دهی کنید
همون اسم متغییر رو میزنیم فقط بدون $
** توی فانکشن های خود php هم میتونید از این مورد استفاده کنید و لذت ببرید :))
👤 Matin Soleymani
💎 Channel: @DevelopixPHP
توی php 8 به بعد یه ویژگی اضافه شده که شما میتونید هر کدوم از پارامتر فانکشن رو مقدار دهی کنید بزارید از روی تصویر و مثال بگم که بهتر متوجه بشید
ما یه function login داریم که چند تا ورودی میپذیره و دوتا از ورودی ها اپشنال هستن و مقدار دیفالت دارن حالا ما شاید میخوایم به اخرین مورد که مقدار دیفالت داره یه مقداری بدیم اون موقع چی؟
توی php های ورژن قبل مجبور بودیم همه رو مقدار دهی کنیم که به اون مورد برسیم یا که همون مقدار دیفالت رو بهشون بدیم (لاین 8)
اما توی php 8 یه فیچر اضافه شده که شما میتونید با زدن اسم متغییر و یک دو نقطه جلوش مقدار دهی کنید
جوری که توی لاین 14 میبینید
چند تا نکته داره
اگه از این مدل مقدار دهی استفاده کنید باید از اون به بعد رو هم به همین شکل مقدار دهی کنید
همون اسم متغییر رو میزنیم فقط بدون $
** توی فانکشن های خود php هم میتونید از این مورد استفاده کنید و لذت ببرید :))
👤 Matin Soleymani
💎 Channel: @DevelopixPHP
👍25🔥9
Forwarded from Developix Support
🔴 شتابان هاست 🔴
🔰 تخفیف ویژه 12 درصدی برای
خرید انواع🔹هاست🔹سرور
در شتابان هاست به مناسبت فرا رسیدن عید نوروز 🥳:
✅ https://shetabanhost.com/
🌟 کد تخفیف اختصاصی:
🔗 https://shetabanhost.com/
🌐 پشتیبانی ۲۴ ساعته شتابان هاست👇👇
☎️ 024-91311031
💎 Channel: @shetabanhostcom
🔰 تخفیف ویژه 12 درصدی برای
خرید انواع🔹هاست🔹سرور
در شتابان هاست به مناسبت فرا رسیدن عید نوروز 🥳:
✅ https://shetabanhost.com/
🌟 کد تخفیف اختصاصی:
shetabanhost
🔗 https://shetabanhost.com/
🌐 پشتیبانی ۲۴ ساعته شتابان هاست👇👇
☎️ 024-91311031
💎 Channel: @shetabanhostcom
❤31👍26🔥13