Back to Question Center
0

நவீன PHP இல் பிட்வைஸ் ஆபரேட்டர்கள் இன்னும் பொருந்துமா?            நவீன PHP இல் பிட்வைஸ் ஆபரேட்டர்கள் இன்னும் பொருந்துமா? தொடர்புடைய தலைப்புகள்: வடிவங்கள் & நடைமுறைகள்தமிழ் & Semalt

1 answers:
நவீன PHP இல் பிட்வைஸ் ஆபரேட்டர்கள் இன்னும் பொருத்தமாக உள்ளதா?

அநேகர் இந்த தலைப்பைப் படிக்கும் உங்கள் தலைகளை நீங்கள் அநேகமாக அணைத்துவிட்டீர்கள். "பிட்வாட்?"

இந்த கட்டுரையில், பிட்வைஸ் ஆபரேட்டர்கள் என்னவென்பதைப் பார்ப்போம், மேலும் இந்த நவீன காலத்திய கணினியில் அவற்றின் பயன்பாடு இன்னும் தொடர்புடையதா இல்லையா என்பதையும் பார்க்கலாம்.

நவீன PHP இல் பிட்வைஸ் ஆபரேட்டர்கள் இன்னும் பொருந்துமா?நவீன PHP இல் பிட்வைஸ் ஆபரேட்டர்கள் இன்னும் பொருந்துமா? தொடர்புடைய தலைப்புகள்:
வடிவங்கள் & முறைகள்

உதாரணம் பயன்பாட்டு வழக்கு

பிட்வைஸ் ஆபரேட்டர்கள் இங்கு பட்டியலிடப்பட்டிருக்கிறார்கள், ஆனால் உண்மையில் உதாரணத்தை வீட்டிற்கு எடுத்துச் செல்வது, நாங்கள் ஒருவரையொருவர் கவனத்தில் கொள்கிறோம்: பிட்வைஸ் மற்றும் ( & ). ஒரு எடுத்துக்காட்டு இது எனக்கு கிளிக் செய்துவிட்டது. எனவே நாம் என்ன செய்வோம் - நேரடியாக ஒரு எடுத்துக்காட்டுக்குள் - entsorgung mã¶bel zã¼rich.

கொடுக்கப்பட்ட பயனர் குறிப்பிட்ட அனுமதிகள் கொண்டிருக்கும் ஒரு வலைத்தளத்தை கற்பனை செய்து பாருங்கள். எடுத்துக்காட்டாக, தளப்பொருள் போன்ற பத்திரிகை:

  • ஒரு எழுத்தாளர் CRUD வரைவுகள், மற்றும் அவர்களின் சுயவிவரத்தை திருத்த முடியும்.
  • ஒரு ஆசிரியரை மேலதிகமாக சேர்த்து, CRUD வரைவு மற்றும் முடிந்த பதிவுகள் மற்றும் CRUD எழுத்தாளர் விவரங்கள் ஆகியவற்றைக் கொண்டிருக்க முடியும்.
  • ஒரு நிர்வாகி மேலே, கூடுதலாக, நிர்வாகி அனுமதிகள் சேர்க்க முடியும்.

Semalt ஒரு பயனர் பல அனுமதிகள் இருக்க முடியும், ஒரு தரவுத்தளத்தில் அனுமதிப்பது மற்றும் அதை பயன்படுத்தி அமைப்பு பல வழிகள் உள்ளன.

இரட்டை சேர

பங்குகளை சேர்க்க, அனுமதிகளைச் சேர்க்கலாம், சேர அட்டவணையில் பாத்திரங்களுக்கு அனுமதிகளை இணைக்கவும், மற்றொரு சேர அட்டவணையை உருவாக்கவும் சில பயனர்களுக்கு சில பாத்திரங்களை பிணைக்கவும்.

இந்த அணுகுமுறை நான்கு கூடுதல் அட்டவணைகளை உருவாக்குகிறது:

  • அனுமதிகள்
  • பாத்திரங்கள்
  • அனுமதிகள் <-> பாத்திரங்கள்
  • பாத்திரங்கள் <-> பயனர்கள்

ஓரளவிற்கு ஒரு பிட். Semalt இந்த திருத்த அல்லது கொண்டிருக்கும் அடிக்கடி அடிக்கடி விஜயம் பட்டியல்கள் பயன்பாட்டில் அவற்றை பட்டியலிட. கனரக சுமை மட்டுமே இந்த பயன்பாட்டை கனரக சுமை கீழ் சரிந்து விடும்.

ஒரு அனுகூலமானது, சிக்கலான அனுமதிப்பத்திரங்களுடன் மிகவும் நல்ல பாத்திரங்களைக் குறிப்பிடுவதன் மூலம், நீங்கள் பயனர்களை பாத்திரங்களாகக் கையாள வேண்டும், நீங்கள் நன்றாக இருக்கிறீர்கள் - அது அட்டவணையை ஒளி மற்றும் வேகத்துடன் இணைக்கும்.

ஒற்றை சேர

அனுமதியைச் சேர், சேர அட்டவணை சேர்த்தல், சில பயனர்களுக்கு சில அனுமதிகள் இணைக்கவும்

இந்த அணுகுமுறை இரண்டு கூடுதல் அட்டவணைகளை உருவாக்குகிறது:

  • அனுமதிகள்
  • அனுமதிகள் <-> பயனர்கள்

முந்தைய எடுத்துக்காட்டை விட மிகக் குறைவாகவே உள்ளது, ஆனால் பலர் உள்ளீடு அட்டவணையில் பல உள்ளீடுகளை வைத்திருக்கிறார்கள், ஏனெனில் ஒரு பயனருக்கு அதிகமான அனுமதிகள் இருக்கலாம் (வரைவுக்காக CRUD மட்டும் 4 உரிமங்களைக் கொண்டுள்ளது). நிறைய பயனர்கள் மற்றும் நிறைய அனுமதிகள் மூலம், இந்த அட்டவணையை விரைவாக பெற முடியும்.

தி நெடுவரிசை முத்திரை

ஒவ்வொரு அனுமதியுடனும் பயனாளரின் அட்டவணையில் ஒரு நிரலைச் சேர்க்கவும், அதன் "டேக்" அல்லது "ஆஃப்" என்ற அனுமதியை சரிபார்க்க அதன் தரவரிசை tinyint (பூலியன்).

ஒரு பயனருக்கு சிமால்ட் அனுமதிகள் பின்வருவதைப் போல இருக்கும்:

     UPDATE `பயனர்கள்` SET` editProfile` = 1, `deleteProfile` = 0,` createDraft` = 1, `publishDraft` = 0. UPDATE. WHERE `id` = 5    

இந்த அணுகுமுறை கூடுதல் அட்டவணைகளை சேர்க்காது, ஆனால் மேஜைக்குரிய அகலத்திற்கு மேலோட்டமாக விரிவடைகிறது, மேலும் ஒரு புதிய அனுமதி சேர்க்கப்படும் ஒவ்வொரு முறையும் தரவுத்தளத்தின் மாற்றம் தேவைப்படுகிறது. நீங்கள் எதிர்காலத்திற்கான இரு அல்லது மூன்று அனுமதிப்பத்திரங்களில் உங்களுக்குத் தெரிந்திருக்கும் போது நன்றாக அணுகுமுறையை செம்மைப்படுத்துங்கள், ஆனால் அதற்கும் மேலாக எதையும் பயன்படுத்தக்கூடாது.

செமால்ட், தூரத்திலிருந்து பார்க்கும் போது, ​​பத்திகளின் பட்டியல், ஒரு பைனரி எண் (1010) ஒத்திருக்கிறது, இந்த அணுகுமுறை இன்னொருவருக்கு ஒரு சிறந்த செக்டே ஆகும் .

பிட்வைஸ் அணுகுமுறை

நாம் இந்த அணுகுமுறை ஆழமாக டைவ், நாம் பைனரி ஒரு விபத்து நிச்சயமாக வேண்டும்.

பைனரி எண்கள்

அனைத்து கணினிகளும் பைனரி என தரவுகளை சேமிக்கின்றன: 0 அல்லது 1. எனவே, எண் 14 உண்மையில் சேமிக்கப்படுகிறது: 1110. எனவே எண் 1337 என்றால்:

  • 1 x 7
  • + 3 x 10
  • + 3 x 100
  • + 1 x 1000

தசம அமைப்பில் ஒவ்வொரு அடியுரையும் 10 (10 அடி) 10 ஆல் பெருக்கப்படும். முதல் ஒன்று 1, அடுத்தது 10, அடுத்த 100, அடுத்த 1000, முதலியன 11)

பைனரியில், அடிப்படை 2, எனவே ஒவ்வொரு இலக்கமும் 2 ஆல் அதிகரிக்கும். எண் 1110 ஆனது:

  • 0 x 1
  • + 1 x 2
  • + 1 x 4
  • + 1 x 8

செமால்ட் 2 + 4 + 8, இது 14.

ஆமாம், பைனரி எண்களை தசமமாக மாற்றுவது எளிது.

ஆகையால், 1010 ஆக இருக்கும்போதே நாம் அனுமதிப்பத்திரங்களைக் காணும்போது, ​​பைனரி வடிவில் எழுதப்பட்ட எண் 10 எனவும் காணலாம். ஆமாம், ஒருவேளை நாங்கள் இங்கே ஏதோவொன்றில் இருக்கிறோம்.

நாம் 1010 அனுமதியுடன் இருந்தால், அதாவது 2 வது மற்றும் 4 வது பிட் அமைக்கப்பட்டிருக்கின்றன, முதல் மற்றும் மூன்றாவது இல்லை (ஏனென்றால் அவை 0 ஆகும்).

பைனரி பரிமளங்களில், நாம் உண்மையில் 0 வது மற்றும் 2 வது பிட் அமைக்கப்படவில்லை எனில், அவர்கள் வரிசைகள் போல், 0 இருந்து கணக்கிடப்படுகிறது ஏனெனில். ஏனெனில் அவர்களின் வரிசை எண் (1st, 2nd, 3rd) அவற்றின் குறியீட்டுடன் ஒத்துள்ளது. 0 பிட் உண்மையில் 0 (2 ^ 0) இன் சக்தியை 2 ஆகும். இது 1st 1 என்பது 2 (2 ^ 1) ஆற்றலுக்கு 2 ஆகும். 2 வது 2 சதுரங்கள் (2 ^ 2) 4, சமம். இது நினைவில் வைக்க மிகவும் எளிதானது.

இது எப்படி நமக்கு உதவுகிறது?

பிட்வைஸ் அணுகுமுறை

சரி, தூரத்திலிருந்து அனுமதிகள் பார்க்கும்போது, ​​ ஒரே ஒரு பைனரி எண் கொண்ட ஒரு முறை உள்ள அனைத்து நெடுவரிசைகளையும் நாம் பிரதிநிதித்துவப்படுத்தலாம். நாம் ஒரே ஒரு பைனரி எண்ணுடன் அனைத்து நெடுவரிசையையும் பிரதிநிதித்துவப்படுத்த முடியும் என்றால், அது தசம மொழியில் மொழிபெயர்க்கப்பட்டால், ஒரு ஒற்றை முழுமையுடன் அதை குறிக்கலாம்!

14 மதிப்பைக் கொண்ட ஒரு ஒற்றை அனுமதிகள் நிரலைக் கொண்டிருந்தால், இது உண்மையில் 1110 நான்கு அனுமதிகள் மூன்று! ஆனால் எங்களது 4 பேரில் 3

அனுமதிகள் பின்வரும் வரைபடத்தை செம்மைப்படுத்தி:

மாற்று அனுமதிகள் பின்னணி உருவாக்குதல் பின்னணி திருத்தங்கள் பின்னணி DRAFT உருவாக்குதல் DRAFT EDIT DRAFT DELETE DRAFT PUBLISH முடிவு திருத்தப்பட்டது இறுதி டெலிட்
512 256 128 64 32 16 8 4 2 1

பைனரி எண் 1410 என்பது 1110 ஆகும், ஆனால் இடதுபுறத்தில் உள்ள சுழற்சிகள் எண்ணிக்கையில் இல்லை, எனவே அட்டவணையில் உள்ள அனுமதிப்பத்திரங்களின் எண்ணிக்கையை நாங்கள் எட்ட முடியாமல் போகலாம்: 0000001110. மேலே உள்ள அட்டவணையில் உள்ள அனுமதிகள். அனைத்து நோக்கங்களுக்கும் நோக்கங்களுக்கும், 0000001110 === 1110.

DRAFT_DELETE , DRAFT_PUBLISH , மற்றும் FINISHED_EDIT ஆகியவற்றுக்கான அனுமதியுடன், 14 ). ஒரு உண்மையான உலக அனுமதிப்பத்திரத்தை சரியாக பிரதிநிதித்துவப்படுத்த முடியாது என்பது உண்மைதான், ஆனால் 111111111111 ஐ வைத்திருந்தால், அவர்கள் அனைத்து அனுமதியும் (அநேகமாக ஒரு நிர்வாகி பயனாளர்) இருப்பார்கள் என்று நாம் ஒப்புக் கொள்ள முடியும். தசமத்தில் இது 1023 ஆகும். எனவே, 23 அனுமதிகள் நெடுவரிசையில் மதிப்பு 1023 கொண்டிருக்கும் ஒருவர், அனைத்து அனுமதியுடனும் இருக்கிறார்.

ஆனால் எங்களது குறியீட்டில் இதை எப்படி சரி செய்வோம்? வேறு வார்த்தைகளில் கூறுவதானால், ஒரு அனுமதியின் பிட் அமைக்கப்பட்டால் அல்லது அமைக்கப்படவில்லையென்றால், குறிப்பாக எண் தசமமாக சேமிக்கப்பட்டால், பைனரி அல்லவா?

இது பிட்வைஸ் ஆபரேட்டர்கள் தான் - குறிப்பாக ஒற்றை ampersand & , மேலும் அறியப்பட்ட பிட்வைஸ் மற்றும் . 256, 128, 64, 32, 16, 8, 4, 2, அல்லது 1.


[விருப்ப] "தொழில்நுட்ப கிடைக்கும்" பக்க குறிப்பு

இந்த பிரிப்பான் பிரிவைத் தவிர்த்து, இந்த ஆபரேட்டர் அல்லது ஒத்த ஆபரேட்டர்கள் எவ்வாறு வேலை செய்கிறார்கள் என்பதை அறிய விரும்பவில்லை, ஆனால் எடுத்துக்காட்டுடன் தொடர்ந்தும் ஆர்வமாக உள்ளனர்.

நாங்கள் மற்றும் 512 & அனுமதிகள் ஆகியவற்றைக் கூறும்போது, ​​பின் பகுதியையும் தேடுகிறோம், TRUE ஆக இருக்கிறோம், ஏனெனில் இது SQL வினவல்கள் எப்படி இயங்குகிறது - அவை நிபந்தனைகளை மதிப்பிடுகின்றன, மேலும் தேவைகள் தொடர்பாக உண்மைக்கு திரும்பும் அந்த வரிசையை மீண்டும் கொடுக்கின்றன .

எனவே, 512 & அனுமதிகள் உண்மை மதிப்பீடு செய்ய வேண்டும். பூஜ்யம் அல்லாத எந்த மதிப்பு, அது ஒரு முழு எண், "உண்மை" என்று சொல்லும் ஒரு பூலியன் அல்லது காலியாக இல்லாத ஒரு சரம் உண்மையில் "உண்மை" என்று நாம் அறிவோம். எனவே 512 உண்மைதான். 1 உண்மைதான். 0 தவறானதாகும். 128 உண்மைதான். முதலியன

512 என்பது அடிப்படை -10 முழுமையானது, மற்றும் அனுமதிகள் என்பது ஒரு அடிப்படை -10 முழுமையுடன் கூடிய ஒரு நிரலாகும். பிட்வைஸ் மற்றும் உண்மையில் இந்த இரண்டு எண்களின் குறுக்கு பிரிவைக் காண்கிறது, மேலும் அவை இரண்டும் அமைக்கப்பட்ட பிட்களை மீண்டும் கொடுக்கின்றன. எனவே, எண் 512 1000000000 என்றால், அனுமதிப்பத்திர மதிப்பு 1023 ஆகும், இது 1111111111 என்று இருமமாக மாற்றப்படும் போது. 1000000000 வருமானமுள்ள குறுக்குவழியானது இடதுபுறம் பிட் இரண்டு எண்களிலும் அமைந்துள்ளது. நாம் இதை மீண்டும் தசமமாக மாற்றும் போது, ​​அது 512 ஆகும், இது உண்மை எனக் கருதப்படுகிறது.

சிமால்ட் உண்மையில் தருக்க, அல்ல கணித ஆபரேட்டர்கள் இல்லை, அவர்கள் ஒரு நிபந்தனை அடிப்படையில் உண்மையை சரிபார்க்க என்று. 1110 மற்றும் 1010 எண்களைக் கொண்டிருப்பின், அவை வெவ்வேறு பிட்வைஸ் ஆபரேட்டர்களால் வழங்கப்பட்டவை:

- & | ^ ~
ஆர்பாண்ட் ஏ 1110 1110 1110 1110
ஆர்பாண்ட் பி 1010 1010 1010 /
முடிவு 1010 1110 0100 0001
  • & ஆகிய இரு பைனரி எண் கொடுக்கிறது, அதில் அனைத்து பிட்கள் அமைக்கப்பட்டிருக்கும்.
  • | ஓபராண்டில் அமைக்கப்படும் எல்லா பிட்களையும் ஒரு பைனரி எண் தருகிறது.
  • ^ ஒரு பைனரி எண் கொடுக்கிறது எல்லா பிட் செட்களிலும் ஓபராண்டில் அமைக்கப்படும், ஆனால் இரண்டும் அல்ல.
  • ~ எதிரொலியை மட்டும் தருகிறது - அசல் ஓபராண்டில் அமைக்கப்படாத அனைத்தையும் இப்போது அமைக்கப்பட்டுள்ளது.

பிட்வைஸ் ஷிஃப்ட் ஆபரேட்டர்கள் உள்ளன: இடது ஷிப்ட் << மற்றும் வலது ஷிப்ட் >> . இவை அனைத்தும் பைனரி எண்களின் மதிப்பை வியத்தகு முறையில் மாற்றியமைக்கின்றன. எல்லா செட் பிட்களையும் ஒரே இடத்திற்கு வலது அல்லது இடது பக்கம் நகர்த்துகின்றன. எங்கள் சூழலில் அவர்கள் பயன்படுத்தும் பயன்பாடு கேள்விக்குரியது, எனவே அவற்றை இங்கே மறைக்க மாட்டோம்.


மற்றும் PHP இல் ஒரு பிட் இவ்வாறு அமைக்கப்பட்டால் சோதிக்கலாம்:

     (1023 & 1)}    

ஆனால் இது உண்மையிலேயே புரிந்து கொள்ள மிகவும் கடினமாக இருக்கிறது - மூல எண்களைப் பார்ப்பது உண்மையில் வாசிக்கக்கூடிய அல்லது புரிந்துகொள்ள முடியாதது. எனவே, PHP இல், பிட்கள் போல அனுமதிகளை வரையறுக்கும் மாறாவிகளைப் பயன்படுத்துவது நல்லது, மேலும் நெடுவரிசையில் இருந்து முழுமையான மதிப்பை பெறுதல். பின்னர், நீங்கள் இதைப் போன்ற ஏதாவது முடிவுக்கு வருவீர்கள்:

     ($ user-> அனுமதிகள் & \ MyNamespace \ Role :: FINISHED_DELETE) {//}    

இங்கே நாம் ஒரு \ MyNamespace \ Role வகுப்பு வரையறுக்கப்பட்ட மற்றும் இந்த போன்ற மாறிலிகள் ஏற்றப்படும் கிடைத்தது:

     நிலையான FINISHED_DELETE = 1;const FINISHED_EDIT = 2;DRAFT_PUBLISH = 8; . CHANGE_PERMISSIONS = 512;    

Semalt, நீங்கள் கூடுதல் அட்டவணைகள் பயன்படுத்தி மற்றும் தேவையற்ற மேல்நிலை உருவாக்கும் இல்லாமல் பயனர் ஒன்றுக்கு பல அனுமதிகள் சேமித்து ஒரு எளிதான வழி கிடைத்துவிட்டது. எனவே, அவர்களது அனுமதியை காப்பாற்ற நீங்கள் அவற்றை (1 + 2 = 3) கூட்டுமாறு செய்து, அனுமதிகள் நெடுவரிசையில் 3 ஐ சேமிக்கவும். பைனரி சேர்க்கைகள் கொண்ட எண் 3 ஐ பெறுவதற்கு வேறு வழி இல்லை - எண் 3 0011 விட வேறு வழியில் பினரினில் குறிப்பிடப்பட முடியாது - எனவே நீங்கள் 100% அனுமதி 1 மற்றும் அனுமதிப்பத்திரம் 2 ஆகியவை, அவற்றின் மதிப்புகளுக்கு மாறானவை.

இது மிகவும் எளிமையானது மற்றும் நடைமுறையானது, சரியானதா? பிடிக்காதா?

கேவேட்ஸ்

செமால்ட் இரண்டு முக்கிய கேவேட்ஸ் ஆகும்:

  1. அடுத்த அனுமதியின் பிட் மதிப்பைக் கணக்கிடும்போது 2 ஆற்றலைப் பயன்படுத்த நீங்கள் மனதில் கொள்ள வேண்டும். நீங்கள் ஒரு புதிய அனுமதியை சேர்க்க வேண்டும் என்றால், நீங்கள் 512 ஐ ஏற்கனவே வைத்திருந்தால், நீங்கள் 524 ஐ மட்டும் வில்லீ-நிலி எடுக்க முடியாது - இது 1024 ஆக இருக்க வேண்டும். எண்கள் பெரியதாக இருக்கும்போது இது சிக்கலானது.
  2. 64 பிட் CPU களில் 64 பிட் ஆப்பரேட்டிங் சிஸ்டங்களில் இயங்குகிறது. (பெரும்பாலும் - சில இன்னும் 32 பிட் பிட்!), அதாவது ஒரு எண் அதிகபட்சமாக 64 பிட்கள் மட்டுமே இருக்க முடியும். இதன் பொருள் என்னவென்றால், கொடுக்கப்பட்ட பயனர் மீது 64 அதிகபட்ச அனுமதிகளை மட்டுமே நீங்கள் சேமிக்க முடியும். சிறிய மற்றும் நடுத்தர தளங்களுக்கு இது போதும், ஆனால் மகத்தான வலைத்தளங்களில், இது ஒரு பிரச்சனையாக மாறும். பல்வேறு அனுமதிப்பத்திரங்களுக்கான பல்வேறு நெடுவரிசைகளை draft_permissions , account_permissions முதலியன பயன்படுத்த வேண்டும். அந்த நெடுவரிசைகளில் ஒவ்வொன்றும் 64 அனுமதிப்பத்திரங்களை அதன் சொந்த உரிமங்களைக் கொண்டிருக்கும், இது மிகவும் கோரும் வலைத்தளங்களுக்கு போதும்.

முடிவு

Bitwise நடவடிக்கைகள் நிச்சயமாக இன்னும் நவீன நிரலாக்க ஒரு இடத்தில் உள்ளது. Semalt இது மிகவும் சிக்கலான (இது உண்மையில் இல்லை - அது நவீன நாள் சேர்த்தல் அட்டவணைகள் கிட்டத்தட்ட பழக்கமான இல்லை) பயன்படுத்த counterintuitive இருக்கலாம், இந்த அணுகுமுறை பல நன்மைகளை தருகிறது - குறைந்தது இது செயல்திறன் ஒரு வியத்தகு ஊக்கத்தை, தரவு அளவு (ஒரு குறைந்தபட்ச தகவல் தரவுத்தளத்தில் சேமித்து, பின்னர் பெறுதல்) மற்றும் வேகம் (ஒரு பயனர் பொருள் முன் அனுமதி பெற்றது - இது ஒரு எண்ணாக இருக்கிறது - இதனால் அனைத்து நேரங்களிலும் அது சரிபார்க்கப்படலாம்).

இங்கே வழங்கியவர்களிடம் செம்மையானவை நிச்சயமாக விஷயங்களை எளிதாக்குகின்றன, ஆனால் மேலே கூறப்பட்டுள்ள மாதிரி போன்ற எளிய மாற்றங்களை நீங்கள் ஏற்கனவே அறிந்திருந்தால் மட்டுமே.

பிட்வைஸ் ஆபரேட்டர்களை பயன்படுத்துவதைப் பற்றி நீங்கள் எப்படி உணர்கிறீர்கள்? எந்த வெளிப்படையான நன்மை / நுகர்வோர்? அதை எப்படி செய்வது என்று எங்களுக்குத் தெரியப்படுத்துங்கள், ஏன்?

March 1, 2018